1、RegCreateKeyEx
通过RegCreateKeyEx函数可以在注册表中创建键,如果需要创建的键已经存在了,则打开键。函数原型如下:
LONG RegCreateKeyEx(
HKEY hKey,
LPCTSTR lpSubKey,
DWORD Reserved,
LPTSTR lpClass,
DWORD dwOptions,
REGSAM samDesired,
LPSECURITY_ATTRIBUTESlpSecurityAttributes,
PHKEY phkResult,
LPDWORD lpdwDisposition
);
各参数及返回值的含义如下:
?hKey为主键值,可以取下面的一些数值:
HKEY_CLASSES_ROOT、HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER、HKEY_LOCAL_MACHINE
HKEY_USER、HKEY_PERFORMANCE_DATA(WINNT操作系统)
HKEY_DYN_DATA(WIN9X操作系统)
?参数lpSubKey为一个指向以零结尾的字符串的指针,其中包含将要创建或打开的子键的名称。子键不可以用反斜线()开始。该参数可以为NULL。
?Reserved保留,必须设置为0。
?参数lpClass一个指向包含键类型的字符串。如果该键已经存在,则忽略该参数。
?参数dwOptions为新创建的键设置一定的属性。可以取下面的一些数值:
REG_OPTION_NON_VOLATILE 新创建的键为一个非短暂性的键(数据信息保存在文件中,当系统重新启动时,数据信息恢复)
REG_OPTION_VOLATILE 新创建的键为一个短暂性的键(数据信息保存在内存中)。Windows95忽略该数值。
REG_OPTION_BACKUP_RESTORE 仅在WINNT中支持,可以提供优先级支持。
?参数samDesired用来设置对键访问的权限,可以取下面的一些数值:
KEY_CREATE_LINK 准许生成符号键
KEY_CREATE_SUB_KEY 准许生成子键
KEY_ENUMERATE_SUB_KEYS 准许生成枚举子键
KEY_EXECUTE 准许进行读操作
KEY_NOTIFY 准许更换通告
KEY_QUERY_VALUE 准许查询子键
KEY_ALL_ACCESS 提供完全访问,是上面数值的组合
KEY_READ 是下面数值的组合:
KEY_QUERY_VALUE、KEY_ENUMERATE_SUB_KEYS、KEY_NOTIFY
KEY_SET_VALUE 准许设置子键的数值
KEY_WRITE 是下面数值的组合:
KEY_SET_VALUE、KEY_CREATE_SUB_KEY
?参数lpSecurityAttributes为一个指向SECURITY_ATTRIBUTES结构的指针,确定返回的句柄是否被子处理过程继承。如果该参数为NULL,则句柄不可以被继承。在WINNT中,该参数可以为新创建的键增加安全的描述。
?参数phkResult为一个指向新创建或打开的键的句柄的指针。
?参数lpdwDispition指明键是被创建还是被打开的,可以是下面的一些数值:
REG_CREATE_NEW_KEY 键先前不存在,现在被创建。
REG_OPENED_EXISTING_KEY 键先前已存在,现在被打开。
2、RegSetValueEx
RegSetValueEx函数可以设置注册表中键的值,函数原型如下:
LONG RegSetValueEx(
HKEY hKey,
LPCTSTR lpValueName,
DWORD Reserved,
DWORD dwType,
CONST BYTE *lpData,
DWORD cbData
);
各个参数及返回值的含义如下:
?参数hKey的含义同RegCreateKeyEx函数中的hKey参数。
?参数lpValueName为一个指向包含值名的字符串指针。
?Reserved保留,通常必须设置为0。
?参数dwType确定了设置的值的类型同RegQueryValueKeyEx的lyType参数。
?参数lpData为一个指向包含数据的缓冲区的指针。
?参数cbData以字节为单位,指定数据的长度。
?返回值同RegCreateKeyEx函数的返回值。
3、RegDeleteValue
4、RegOpenKeyEx
RegOpenKeyEx函数可以打开一个指定的键,函数原型如下:
LONG RegOpenKeyEx(
HKEY hkey,
LPCTSTR lpSubKey,
DWORD ulOption,
REGSAM samDesired,
PHKEY phkResult
);
各参数及返回值的含义如下:
?参数hKey的含义同RegCreateKeyEx函数中的hKey参数。
?参数lpSubKey为一个指向以零结尾的字符串的指针,其中包含子键的名称,可以利用反斜线()分隔不同的子键名。如果字符串为空,则根据hKey参数创建一个新的句柄。在这种情况下,并不关闭先前打开的句柄。
?ulOption保留,通常必须设置为0。
?参数samDesired的含义同RegCreateKeyEx函数中的samDesired参数。
?参数phkResult为一个指针,用来指向打开的键的句柄。可以通过RegCloseKey函数关闭这个句柄。
?返回值同RegCreateKeyEx函数的返回值。
5、RegEnumValue
6、RegQueryValueEx
通过RegQueryValueEx函数可以从一个已经打开的键中读取数据,函数原型如下:
LONG RegQueryValueEx(
HKEY hKey,
LPTSTR lpValueName,
LPDWORD lpReserved,
LPDWORD lpType,
LPBYTE lpData,
LPDWORD lpcbData
);
各个参数及返回值的含义如下:
?参数hKey为当前的一个打开的键的句柄,具体数值同RegCreateKeyEx函数的hKey参数。
?参数lpVauleName为一个指向非空的包含查询值的名称的字符串指针。
?lpReserved保留,必须为NULL。
?参数lpType为一个指向数据类型的指针,数据类型为下列类型之一:
REG_BINARY 二进制数据
REG_DWORD 32位整数
REG_DWORD_LITTLE_ENDIAN little-endian格式的数据,例如0X12345678以(0X78 0X56 0X34 0X12)方式保存
REG_DWORD_BIG_ENDIAN big-endian格式的数据,例如0X12345678以(0X12 0X34 0X56 0X78)方式保存
REG_EXPAND_SZ 一个包含未扩展环境变量的字符串
REG_LINK 一个Unicode类型的链接
REG_MULIT_SZ 以两个零结尾的字符串
REG_NONE 无类型数值
REG_RESOURCE_LIST 设备驱动资源列表
REG_SZ 一个以零结尾的字符串根据函数使用的字符集类型的不同而设置为Unicode或ANSI类型的字符串
?参数lpData为一个指向保存返回值的变量的指针。如果不需要返回值,该参数可以为NULL。
?参数lpcbData为一个指向保存返回值长度的变量的指针。其中长度以字节为单位。如果数据类型为REG_SZ、REG_MULTI_SZ或REG_EXPAND_SZ,那么长度也包括结尾的零字符,只有在参数lpData为NULL时,参数lpcbData才可以为NULL。
?返回值同RegCreateKeyEx函数的返回值。