在红色 C++ 内存时,我得到的是指针地址,而不是输出值

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

因此,对于一个项目,我尝试读取注册表双字。我已经编写了一些代码,但我得到的是指针地址作为输出,而不是我正在寻找的值。有人可以帮我吗? 这是我的代码:

#include <windows.h>
#include <iostream>

using namespace std;

void registry_read(LPCTSTR subkey, LPCTSTR name, DWORD type)
{
    HKEY key;
    TCHAR value[255];
    DWORD value_length = 255;
    RegOpenKey(HKEY_LOCAL_MACHINE, subkey, &key);
    RegQueryValueEx(key, name, NULL, &type, (LPBYTE)&value, &value_length);
    RegCloseKey(key);
    cout << value << endl;
}

int main()
{
    registry_read(TEXT("SOFTWARE\\Valve\\Steam\\ActiveProcess"), TEXT("ActiveUser"), REG_DWORD);
    return 0;
}

我尝试使用 google/stackoverflow 来查找我的错误,但一切都不起作用,因为我资助的所有结果都是 reg_sz 而不是 reg_dword

c++ windows registry
1个回答
0
投票

当您读取

DWORD
值时,您的
value
应为
DWORD
类型(相关的
value_length
应为
sizeof DWORD
)。

所以相关行应该是:

DWORD value;
DWORD value_length = sizeof(value);
RegOpenKey(HKEY_CURRENT_USER, subkey, &key);
RegQueryValueEx(key, name, NULL, &type, (LPBYTE)&value, &value_length);
© www.soinside.com 2019 - 2024. All rights reserved.