使用 C 程序读取 HKEY_PERFORMANCE_DATA 注册表项

问题描述 投票:0回答:1

所以我试图通过读取系统性能数据来获取系统信息,这些数据由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
。我哪里错了?据我所知,我不需要任何特殊权限来读取此注册表项,那么这里可能存在什么问题?感谢任何帮助:)

c windows winapi registry
1个回答
0
投票

MS 在此文档中声明:

要从本地系统获取性能数据,请调用RegQueryValueEx函数。使用 HKEY_PERFORMANCE_DATA 作为键。第一次通话打开钥匙。您不需要先显式打开密钥。

我不知道如何阅读他们的“您不需要先显式打开密钥”。你不

need
吗?还是你
shouldn't
?还是你
must not

我会按照他们的建议尝试

RegQueryValueEx

© www.soinside.com 2019 - 2024. All rights reserved.