Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从32位c+;读取64位注册表+;节目? 我试图从我的C++程序中读取注册表,当我以64位模式运行它时,这很好,但是当我切换到32位模式时,它就没有了。现在我了解到注册表有两个独立的部分,64位和32位部分。我读到我应该用KEY_WOW64_64KEY,但我不知道怎么用。 以下代码是我所拥有的: char value[255]; DWORD BufferSize = BUFFER; RegGetValue(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Cryptography", "MachineGuid", RRF_RT_ANY, NULL, (PVOID)&value, &BufferSize); std::wcout << value << std::endl; system("pause"); char值[255]; DWORD BufferSize=缓冲区; RegGetValue(HKEY_LOCAL_MACHINE、“软件\\Microsoft\\Cryptography”、“MachineGuid”、RRF_RT_ANY、NULL、(PVOID)和value以及BufferSize); std::wcout_C++_Windows_Winapi_Registry - Fatal编程技术网

从32位c+;读取64位注册表+;节目? 我试图从我的C++程序中读取注册表,当我以64位模式运行它时,这很好,但是当我切换到32位模式时,它就没有了。现在我了解到注册表有两个独立的部分,64位和32位部分。我读到我应该用KEY_WOW64_64KEY,但我不知道怎么用。 以下代码是我所拥有的: char value[255]; DWORD BufferSize = BUFFER; RegGetValue(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Cryptography", "MachineGuid", RRF_RT_ANY, NULL, (PVOID)&value, &BufferSize); std::wcout << value << std::endl; system("pause"); char值[255]; DWORD BufferSize=缓冲区; RegGetValue(HKEY_LOCAL_MACHINE、“软件\\Microsoft\\Cryptography”、“MachineGuid”、RRF_RT_ANY、NULL、(PVOID)和value以及BufferSize); std::wcout

从32位c+;读取64位注册表+;节目? 我试图从我的C++程序中读取注册表,当我以64位模式运行它时,这很好,但是当我切换到32位模式时,它就没有了。现在我了解到注册表有两个独立的部分,64位和32位部分。我读到我应该用KEY_WOW64_64KEY,但我不知道怎么用。 以下代码是我所拥有的: char value[255]; DWORD BufferSize = BUFFER; RegGetValue(HKEY_LOCAL_MACHINE, "SOFTWARE\\Microsoft\\Cryptography", "MachineGuid", RRF_RT_ANY, NULL, (PVOID)&value, &BufferSize); std::wcout << value << std::endl; system("pause"); char值[255]; DWORD BufferSize=缓冲区; RegGetValue(HKEY_LOCAL_MACHINE、“软件\\Microsoft\\Cryptography”、“MachineGuid”、RRF_RT_ANY、NULL、(PVOID)和value以及BufferSize); std::wcout,c++,windows,winapi,registry,C++,Windows,Winapi,Registry,根据: RRF_子键_WOW6464键 如果lpSubKey不为NULL,请打开 lpSubKey使用KEY\u WOW64\u 64键访问权限指定的子键 因此,您可以将代码修改为: RegGetValue(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Cryptography",L"MachineGuid", RRF_RT_ANY | RRF_SUBKEY_WOW6464KEY, NULL, (PVOID)&

根据:

RRF_子键_WOW6464键

如果lpSubKey不为NULL,请打开 lpSubKey使用KEY\u WOW64\u 64键访问权限指定的子键

因此,您可以将代码修改为:

RegGetValue(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Cryptography",L"MachineGuid", RRF_RT_ANY | RRF_SUBKEY_WOW6464KEY, NULL, (PVOID)&value, &BufferSize);

然后它对我有效。

你应该首先解释“不起作用”的含义-什么是
RegGetValue
return?您没有检查这个,这是错误。它返回的值为!=在std::wcout“我读到我应该使用KEY\u WOW64\u 64KEY”之后您的看法-是的,您应该这样做。但是,您使用的是
KEY\u WOW64\u 32KEY
。那些是不同的旗帜。现在还不清楚为什么你期望后一个标志显示前一个标志的行为。另外,这两种方法都不可接受。有你需要的所有信息。@IInspectable不完全是。它没有解释
RegGetValue()
RRF_子键\u WOW64(32 | 64)键
标志,只解释
RegCreateKeyEx()
/
RegDeleteKeyEx()
/
RegOpenKeyEx()
键(32 | 64)键
标志。嗨,答案解决了你的问题吗?请随时让我知道,如果你有任何问题,也接受它,如果它确实有帮助。
RegGetValue(HKEY_LOCAL_MACHINE, L"SOFTWARE\\Microsoft\\Cryptography",L"MachineGuid", RRF_RT_ANY | RRF_SUBKEY_WOW6464KEY, NULL, (PVOID)&value, &BufferSize);