64位系统下如何读取32位注册表信息

时间:2022-09-05 09:06:46
我的系统是Win7 64位,在写C++代码读取注册表OFTWARE\\Microsoft\\Windows\\CurrentVersion\\Uninstall这个位置时,发现自动跳转到了Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall这个位置,经过查阅跟微软本身的设置有关,但还没有找到解决方案,怎么直接读取第一个位置里面的注册表信息,求大神帮助

6 个解决方案

#1


64 位 windows 上的 32 位进程, 访问:
注册表
系统目录
时, 会被自动转向.

如果要查询已经安装的软件,
还是实用 msi API 正解.

#2


楼主是怎么发现自动跳转到那里了?

个人猜测是因为注册表中的这两个位置对应的储巢内容是同一个,就如同,int a=5; int &b=a;一样,使用b和使用a是一样的,别名而已。还会纠结这个问题吗?

#3


32位程序在64位系统内运行时,访问注册表HKLM\Software 被自动转向到 Software\Wow6432Node。
64位程序在64位系统内运行时,访问注册表时,可以看到HKLM\Software和HKLM\Software\Wow6432Node。

#4


引用 1 楼 Exaybachay 的回复:
64 位 windows 上的 32 位进程, 访问:
注册表
系统目录
时, 会被自动转向.

如果要查询已经安装的软件,
还是实用 msi API 正解.


请问 msi API 是什么?

#5


引用 3 楼 davidyu720 的回复:
32位程序在64位系统内运行时,访问注册表HKLM\Software 被自动转向到 Software\Wow6432Node。
64位程序在64位系统内运行时,访问注册表时,可以看到HKLM\Software和HKLM\Software\Wow6432Node。

正解,在打开键时,加KEY_WOW64_64KEY参数就可以了,问题解决

#6


msi是安装文件的后缀名。msi API 应该是指应用程序安装卸载的管理API.

#1


64 位 windows 上的 32 位进程, 访问:
注册表
系统目录
时, 会被自动转向.

如果要查询已经安装的软件,
还是实用 msi API 正解.

#2


楼主是怎么发现自动跳转到那里了?

个人猜测是因为注册表中的这两个位置对应的储巢内容是同一个,就如同,int a=5; int &b=a;一样,使用b和使用a是一样的,别名而已。还会纠结这个问题吗?

#3


32位程序在64位系统内运行时,访问注册表HKLM\Software 被自动转向到 Software\Wow6432Node。
64位程序在64位系统内运行时,访问注册表时,可以看到HKLM\Software和HKLM\Software\Wow6432Node。

#4


引用 1 楼 Exaybachay 的回复:
64 位 windows 上的 32 位进程, 访问:
注册表
系统目录
时, 会被自动转向.

如果要查询已经安装的软件,
还是实用 msi API 正解.


请问 msi API 是什么?

#5


引用 3 楼 davidyu720 的回复:
32位程序在64位系统内运行时,访问注册表HKLM\Software 被自动转向到 Software\Wow6432Node。
64位程序在64位系统内运行时,访问注册表时,可以看到HKLM\Software和HKLM\Software\Wow6432Node。

正解,在打开键时,加KEY_WOW64_64KEY参数就可以了,问题解决

#6


msi是安装文件的后缀名。msi API 应该是指应用程序安装卸载的管理API.