注册表API

1、创建键

  RegCreateKeyEx函数将创建指定的注册表项,如果这个表项已经存在,则打开该表项;

  LONG RegCreateKey(

    HKEY hKey,       

    LPCTSTR lpSubKey,

    PHKEY phkResult  

  );

    hKey:指向当前打开表项的句柄,或是下列预定义的保留句柄值之一:

      HKEY_CLASSES_ROOT

      HKEY_CURRENT_CONFIG

      HKEY_CURRENT_USER

      HKEY_LOCAL_MACHINE

      HKEY_USERS

      Windows NT: HKEY_PERFORMANCE_DATA

      Windows 95 and Windows 98: HKEY_DYN_DATA

    lpSubKey:指向将打开或创建的表项的名称的指针,该表项必须是由hKey参数所标识的项的子项;

    phkResult:指向一个变量的指针,用来接收打开或创建的表项的句柄;当不再需要此返回的注册表项句柄时,调用RegCloseKey函数关闭这个句柄;

2、打开键

  RegOpenKey函数将打开指定的注册表项;

  LONG RegOpenKey(

    HKEY hKey,       

    LPCTSTR lpSubKey,

    PHKEY phkResult  

  );

    各参数同RegCreateKey的参数相同

3、写入注册表

  在注册表中,值包含三个部分:值名称、值类型、值本身;

  RegSetValueEx函数可设置注册表项下指定值的数据和类型;

  LONG RegSetValueEx(

    HKEY hKey,         

    LPCTSTR lpValueName,

    DWORD Reserved,    

    DWORD dwType,       

    CONST BYTE *lpData, 

    DWORD cbData        

  );

    hKey:同RegCreateKey的参数hKey相同;

    lpValueName:指向一个字符串的指针,该字符串包含了要设置值的值名称;如果有该名称的值不存在于指定的注册表项中,则将其加入到该表项中;如果该参数为NULL或指向空字符串,则为该表项的默认值或未命名值设置类型和数据;

    Reserved:保留参数,必须为0;

    dwType:指定将被存储的值的数据类型,包括:

      REG_BINARY  --任何形式的二进制数据

      REG_DWORD  --一个32位的数字

      REG_DWORD_LITTLE_ENDIAN  --一个“低字节在前”格式的32位数字

      REG_DWORD_BIG_ENDIAN  --一个“高字节在前”格式的32位数字

      REG_EXPAND_SZ  --一个以0结尾的字符串,该字符串包含对环境变量(”%PATH“)的未扩展引用

      REG_LINK  --一个Unicode格式的带符号链接

      REG_MULTI_SZ  --一个以0结尾的字符串数组,该数组以连接两个0为终止符

      REG_NONE  --未定义值类型

      REG_RESOURCE_LIST  --一个设备驱动器资源列表

      REG_SZ  --一个以0结尾的字符串

    lpData:指向一个缓冲区,该缓冲区包含了要为了指定值名称存储的数据;

    cbData:指定lpData参数所指向的数据的大小,单位为字节;

4、从注册表中读数据

  RegQueryValueEx函数将读取注册表项下指定值的数据和类型;

  LONG RegQueryValueEx(

    HKEY hKey,         

    LPTSTR lpValueName,

    LPDWORD lpReserved,  

    LPDWORD lpType,     

    LPBYTE lpData,     

    LPDWORD lpcbData    

  );

    hKey:同RegCreateKey的参数hKey相同;

    lpValueName:指向一个以0结尾的字符串的指针,该字符串包含要查询的值的名称;如果此参数为NULL或指向一个空字符串,则函数将获得该注册表项的未命名值或默认值的类型及数据;

    lpReserved:保留参数,必须为NULL;

    lpType:指向一个变量的指针,该变量用于接收保存在指定值中的数据的类型代码,包括:

      REG_BINARY  --任何形式的二进制数据

      REG_DWORD  --一个32位的数字

      REG_DWORD_LITTLE_ENDIAN  --一个“低字节在前”格式的32位数字

      REG_DWORD_BIG_ENDIAN  --一个“高字节在前”格式的32位数字

      REG_EXPAND_SZ  --一个以0结尾的字符串,该字符串包含对环境变量(”%PATH“)的未扩展引用

      REG_LINK  --一个Unicode格式的带符号链接

      REG_MULTI_SZ  --一个以0结尾的字符串数组,该数组以连接两个0为终止符

      REG_NONE  --未定义值类型

      REG_RESOURCE_LIST  --一个设备驱动器资源列表

      REG_SZ  --一个以0结尾的字符串

    lpData:指向一个缓冲区,该缓冲区接收该值的数据;

    lpcbData:指向一个变量指针,该变量指示了参数lpData所指向的缓冲区的数据大小,单位为字节;当函数RegQueryValueEx返回时,此函数指向的变量则包含了实际复制到缓冲区的字节数;

原文地址:https://www.cnblogs.com/zhouwanqiu/p/6921446.html