|
如何在VC++中使用注册表(2) 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 键先前已存在,现在被打开。 ·返回值 如果函数调用成功,则返回ERROR_SUCCESS。否则,返回值为文件WINERROR.h中定义的一个非零的错误代码,可以通过设置FORMAT_MESSAGE_FROM_SYSTEM标识调用FormatMessage函数来获取一个对错误的总体描述。 二、 打开一个键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函数的返回值。 三、 读取键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类型的字符串
|