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