C++ 32位和64位Windows上的注册表

C++ 32位和64位Windows上的注册表,c++,winapi,registry,64-bit,C++,Winapi,Registry,64 Bit,我在Windows x64中的注册表有问题。我需要通过file.reg获得增值: REGEDIT4 [HKEY_LOCAL_MACHINE\SOFTWARE\My Soft] "Str1" = "Assa" "Str2" = "142Z5214GGAAVGA" 在代码中,我执行以下操作: RegCreateKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\My Soft", 0,NULL,0, KEY_READ | KEY_WOW64_64KEY,NULL,&a

我在Windows x64中的注册表有问题。我需要通过file.reg获得增值:

REGEDIT4

[HKEY_LOCAL_MACHINE\SOFTWARE\My Soft]
"Str1" = "Assa"
"Str2" = "142Z5214GGAAVGA"
在代码中,我执行以下操作:

RegCreateKeyEx(HKEY_LOCAL_MACHINE, "SOFTWARE\\My Soft", 0,NULL,0,    KEY_READ | KEY_WOW64_64KEY,NULL,&hKey,&dwDis))
/*
Get the value by RegQueryValueEx... 
*/
在32位的Windows中,这是很好的。在64位中,值为空

附言:
对不起,我的英文是Google Translate ^ ^

你试过
HKEY\U LOCAL\u MACHINE\Software\WOW6432Node

64位版本的Windows附带的默认64位版本的注册表编辑器(Regedit.exe)同时显示64位键和32位键。WOW64注册表重定向器为32位程序注册表项提供具有不同键的32位程序。在64位版本的注册表编辑器中,32位注册表项显示在以下注册表项下


您说需要获取一个值,但您正在调用
RegCreateKeyEx
。你真的需要创建它吗?如果是这样,它可能是在HKLM/Software/Wow6432Node中创建的。

您说需要获取一个值,但您正在调用
RegCreateKeyEx
。你真的需要创建它吗?如果是,它可能是在HKLM/Software/Wow6432Node中创建的。是否尝试删除KEY\u WOW64\u 64KEY标志?这会重定向到64位平台上的其他注册表位置。您可以找到更多的信息。Projt+Projices,Bug选项卡,取消VS2012上的“首选32位”复选框,将平台目标更改为任意CPU。C++和<代码>这将如何工作?Viva64知识库:WOW6432节点和API函数RegOpenKeyEx/RegEnumKeyEx-