RegOpenKeyEx函数打开指定的注册表项。
1LONG RegOpenKeyEx( 2 HKEY hKey, // handle to open key 3 LPCTSTR lpSubKey, // subkey name 4 DWORD ulOptions, // reserved 5 REGSAM samDesired, // security access mask 6 PHKEY phkResult // handle to open key 7);
参数
hkey:当前打开的密钥或以下预定义密钥之一的句柄
HKEY_CLASSES_ROOT
HKEY_CURRENT_CONFIG
HKEY_CURRENT_USER
HKEY_LOCAL_MACHINE
HKEY_USERS
Windows NT/2000/XP: HKEY_PERFORMANCE_DATA
Windows 95/98/Me: HKEY_DYN_DATA
lpSubKey:指向一个空终止字符串的指针,该字符串包含要打开的子键的名称。如果该参数为NULL或指向空字符串的指针,则函数将为由hKey参数标识的键打开一个新句柄。在这种情况下,函数将不会关闭先前打开的句柄。
ulOptions:保留;必须是零。
samDesired:一个访问掩码,它指定对密钥的期望访问权限。这个参数可以是以下值的组合。KEY_CREATE_LINK、KEY_CREATE_SUB_KEY、KEY_ENUMERATE_SUB_KEYS、KEY_EXECUTE、KEY_NOTIFY、KEY_QUERY_VALUE、KEY_SET_VALUE、KEY_ALL_ACCESS、KEY_READ、KEY_WOW64_64KEY、KEY_WOW64_32KEY、KEY_WRITE。
phkResult:指向变量的指针,该变量接收打开的键的句柄。当您不再需要返回的句柄时,请调用RegCloseKey函数来关闭它。
返回值
如果函数成功,返回值为ERROR_SUCCESS。 如果函数失败,返回值是Winerror.h中定义的非零错误代码。您可以使用FormatMessage函数和FORMAT_MESSAGE_FROM_SYSTEM标志来获得错误的通用描述。
示例代码:
1#include<stdio.h> 2#include<conio.h> 3#include<windows.h> 4void main(void) 5{ 6 long lRet; 7 HKEY hKey; 8 TCHAR tchData[64]; 9 DWORD dwSize; 10 lRet=RegOpenKeyEx( 11 HKEY_LOCAL_MACHINE, // handle to open key 12 "Hardware\\Description\\System\\CentralProcessor\\0", // subkey name 13 0, // reserved 14 KEY_QUERY_VALUE, // security access mask 15 &hKey // handle to open key 16 ); 17 if(lRet==ERROR_SUCCESS) 18 { 19 dwSize=sizeof(tchData); 20 lRet=RegQueryValueEx( 21 hKey, // handle to key 22 "ProcessorNameString", // value name 23 NULL, // reserved 24 NULL, // type buffer 25 (LPBYTE)tchData, // data buffer 26 &dwSize // size of data buffer 27 ); 28 if(lRet==ERROR_SUCCESS) 29 { 30 printf("\n CPU INFO:"); 31 printf("%s\n",tchData); 32 } 33 //以下是失败的内容 34 else 35 { 36 printf("\nCPU INFO:"); 37 printf("UNKNOWN\n"); 38 } 39 } 40 //以下是打开失败 41 else 42 { 43 printf("\n CPU INFO:"); 44 printf("UNKNOWN\n"); 45 } 46 RegCloseKey(hKey); 47 getch(); 48}