32位和64位Windows上的注册表

时间:2013-06-27 08:54:06

标签: 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,&hKey,&dwDis))
/*
Get the value by RegQueryValueEx... 
*/

在32位Windows中是好的。在64位值是空的。

PS: Google翻译对不起我的英文^ _ ^

2 个答案:

答案 0 :(得分:0)

您是否尝试过HKEY_LOCAL_MACHINE\Software\WOW6432Node

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

Source

答案 1 :(得分:0)

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