C++ 用c+枚举HKEY#U LOCAL#U MACHINE\软件中的注册表子项+;
我无法枚举HKEY_LOCAL_MACHINE \软件的子键,我只能得到HKEY_LOCAL_MACHINE上的子键C++ 用c+枚举HKEY#U LOCAL#U MACHINE\软件中的注册表子项+;,c++,C++,我无法枚举HKEY_LOCAL_MACHINE \软件的子键,我只能得到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 (regEr
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);
如何在HKEY_LOCAL_MACHINE\软件中输出密钥,而不仅仅是HKLM?谢谢。您将错误的
HKEY
传递给RegEnumKeyEx()
。您正在传递HKLM
根目录,但需要传递RegOpenKeyEx()返回的HKEY
。换言之,改变这一点:
RegEnumKeyEx(HKEY_LOCAL_MACHINE, ...)
为此:
RegEnumKeyEx(hKey, ...)
RegEnumKeyEx(hKey, ...)