32位程序在64位系统读注册表问题

我们进行项目开发时,有些配置经常会放在注册表中进行控制。一般情况下,为了能够兼容32位系统和64位系统,我们的应用程序都是32位的。在解决项目问题中,就涉及到32位和64位的注册表问题,今天记录如下。

问题现象:

我们的程序在32位系统运行的正常,但在64位系统下,某些功能开始失效,日志打印开关也不受注册表控制。

原因分析:

64 位版本 Windows 中的注册表分为 32 位注册表项和 64 位注册表项。许多 32 位注册表项与其相应的 64 位注册表项同名。在不知道情况下,特别容易搞混乱,因此需要特别注意。

为了防止注册表键冲突,注册表在某些键也分成了两个部分。一部分是专门给64位系统访问的,另一部分是专门给32位系统访问的。当32位程序去访问某些键值的时候,和文件转向类似,系统也会自动地把程序的访问转向到Wow6432Node下面。

在 64 位版本的注册表编辑器中,32 位注册表项显示在以下注册表项下:
HKEY_CURRENT_USER\Software\Wow6432Node\

猜你喜欢

转载自blog.csdn.net/xiao3404/article/details/80947204