我在枚举HKEY_LOCAL_MACHINE \ SOFTWARE的子项时遇到麻烦,我只能获得HKEY_LOCAL_MACHINE上的子项。
WCHAR Temp[255];
DWORD TMP = 255;
HKEY hKey;
int count = 0;
long regError;
...
regError = RegOpenKeyEx(HKEY_LOCAL_MACHINE, L"SOFTWARE\\", NULL, KEY_ENUMERATE_SUB_KEYS, &hKey);
if (regError == ERROR_SUCCESS){
file<<"Key opened!\nSubkeys of HKEY_LOCAL_MACHINE\\SOFTWARE:\n\n";
while ((regError = RegEnumKeyEx(HKEY_LOCAL_MACHINE, count, Temp, &TMP, NULL, NULL, NULL, NULL)) == ERROR_SUCCESS){
TMP = sizeof (Temp);
count++;
file<<count<<". "<<Temp<<std::endl;
}
if (regError == ERROR_NO_MORE_ITEMS) file<<"Done.";
else file << std::endl <<"RegEnumKeyEx error!";
}
else file << std::endl <<"RegOpenKeyEx error!";
RegCloseKey(hKey);
这是我的文件:
Key opened!
Subkeys of HKEY_LOCAL_MACHINE\SOFTWARE:
1. BCD00000000
2. DRIVERS
3. HARDWARE
4. SAM
5. SECURITY
6. SOFTWARE
7. SYSTEM
Done.
如何在HKEY_LOCAL_MACHINE \ SOFTWARE而不是HKLM中输出键?谢谢。
您将错误传递HKEY
给RegEnumKeyEx()
。你逝去的HKLM
根源,但你需要传递的HKEY
是RegOpenKeyEx()
回报。换句话说,更改此:
RegEnumKeyEx(HKEY_LOCAL_MACHINE, ...)
对此:
RegEnumKeyEx(hKey, ...)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句