|
读取注册表中某个键值的内容首先要通过RegOpenKey()或RegOpenKeyEx()函数打开相应的键,然后再调用RegQueryValue()或RegQueryValueEx()检索指定键值的内容,操作完成后调用RegClosefKey()将打开的键关闭,结束对注册表的访问。其中RegOpenKeyEx()和RegQueryValueEx()的功能比较强大,分别是对RegOpenKey()和RegQueryValue()在功能上的扩展,其函数原型为:LONG RegOpenKeyEx(HKEY hKey, // 待打开的预定义键
LPCTSTR lpSubKey, // 待打开的子键的地址
DWORD ulOptions, // 保留
REGSAM samDesired, // 安全访问掩码
PHKEY phkResult // 打开的键的地址
);
LONG RegQueryValueEx(HKEY hKey, // 待检索的键
LPTSTR lpValueName, // 要检索的键值名称的地址
LPDWORD lpReserved, // 保留
LPDWORD lpType, // 键值类型的地址
LPBYTE lpData, // 存放检索结果的缓存的地址
LPDWORD lpcbData // 缓存长度的地址
最后,给出了通过访问注册表键值而得到用户注册信息的简单程序示例,该示例片段展示了对系统注册表指定键的打开、检索以及关闭等基本处理过程:
// 打开键
HKEY hKEY;
LPCTSTR Rgspath = "Software\\Microsoft\\Windows NT\\CurrentVersion";
LONG ret = RegOpenKeyEx(HKEY_LOCAL_MACHINE, Rgspath, 0, KEY_READ, &hKEY);
if(ret != ERROR_SUCCESS)
{
RegCloseKey(hKEY);
return;
}
// 读取键值内容
DWORD dwInfoSize;
DWORD type = REG_SZ;
BYTE UserInfo[255];
ret = RegQueryValueEx(hKEY, "RegisteredOwner", NULL, &type, UserInfo, &dwInfoSize);
if(ret!=ERROR_SUCCESS)
{
RegCloseKey(hKEY);
return;
}
……
// 关闭键
RegCloseKey(hKEY); |
|