从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
根据: RRF_子键_WOW6464键 如果lpSubKey不为NULL,请打开 lpSubKey使用KEY\u WOW64\u 64键访问权限指定的子键 因此,您可以将代码修改为:从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)&
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);