在x64机器上的win32应用程序中注册表

时间:2016-08-19 02:16:42

标签: winapi registry installshield

我正在使用installshield 2010 express edition来制作win32应用程序的安装文件。

我在注册一些注册表项时遇到了一些问题。

我将installshield项目(.ise)配置为注册两个注册表项,如下所示。

  1. [HKCU\Software\ProgName\SomeKeys]
  2. [HKLM\Software\ProgName\SomeKeys]
  3. 当我在x64机器上安装此设置时,HK键会写入Wow6432Node [HKLM\Software\Wow6432Node\ProgName\SomeKeys]。这正是我想要的。

    但HKCU没有向Wow6432Node写任何内容。 它写在[HKCU\Software\ProgName\SomeKeys]而不是[HKCU\Software\Wow6432Node\ProgName\SomeKeys]。

    为什么会出现此问题。

    请给我任何建议。谢谢

1 个答案:

答案 0 :(得分:3)

这在微软的设计上是正常的。请阅读MSDN文档:

Registry Redirector

  

重定向的密钥映射到Wow6432Node下的物理位置。

Registry Keys Affected by WOW64

  

在WOW64下,某些注册表项重定向。当32位或64位应用程序对重定向的密钥进行注册表调用时,注册表重定向器会拦截该调用并将其映射到密钥的相应物理注册表位置。有关详细信息,请参阅Registry Redirector

     

其他注册表项由64位Windows上的32位和64位应用程序共享共享。不会重定向对共享密钥的32位注册表调用。而是将密钥的一个物理副本映射到注册表的每个逻辑视图中。

HKCU\Software下方的用户定义子项共享,因此没有Wow6432Node子项。

HKLM\Software下方的用户定义键重定向,因此有一个Wow6432Node子项。