所以我试图通过读取系统性能数据来获取系统信息,这些数据由NT内部维护,并在打开特殊注册表项时复制到注册表中的位置。由于某种原因,当我尝试访问注册表项时,它会抛出以下错误
#include <stdio.h>
#include <windows.h>
#include <winreg.h>
int main() {
HKEY hKey;
DWORD dataType;
BYTE* buffer = NULL;
DWORD bufferSize = 0;
LSTATUS lResult = RegOpenKeyEx(HKEY_PERFORMANCE_DATA, "Global", 0, KEY_READ, &hKey);
if (lResult != ERROR_SUCCESS)
{
if (lResult == ERROR_FILE_NOT_FOUND) {
printf("Key not found.\n");
return TRUE;
}
else {
printf("Error opening key. %02x \n", lResult);
return FALSE;
}
}
}
输出:
Error opening key. 06
参考windows系统错误代码,0x6对应于
ERROR_INVALID_HANDLE
。我哪里错了?据我所知,我不需要任何特殊权限来读取此注册表项,那么这里可能存在什么问题?感谢任何帮助:)
MS 在此文档中声明:
要从本地系统获取性能数据,请调用RegQueryValueEx函数。使用 HKEY_PERFORMANCE_DATA 作为键。第一次通话打开钥匙。您不需要先显式打开密钥。
我不知道如何阅读他们的“您不需要先显式打开密钥”。你不
need
吗?还是你shouldn't
?还是你must not
?
我会按照他们的建议尝试
RegQueryValueEx
。