Winapi x64计算机上win32应用程序中的注册表
我正在使用installshield 2010 express edition制作win32应用程序的安装文件 我在注册一些注册表项时遇到一些问题 我将installshield项目(.ise)配置为注册两个注册表项,如下所示Winapi x64计算机上win32应用程序中的注册表,winapi,registry,installshield,Winapi,Registry,Installshield,我正在使用installshield 2010 express edition制作win32应用程序的安装文件 我在注册一些注册表项时遇到一些问题 我将installshield项目(.ise)配置为注册两个注册表项,如下所示 [HKCU\Software\ProgName\SomeKeys] [HKLM\Software\ProgName\SomeKeys] 当我在x64机器上安装此设置时,HK键将写入Wow6432Node[HKLM\Software\Wow6432Node\ProgName
HKCU\Software\ProgName\SomeKeys
]HKLM\Software\ProgName\SomeKeys
]Wow6432Node
[HKLM\Software\Wow6432Node\ProgName\SomeKeys
]。这正是我想要的
但HKCU不会将任何内容写入WOW6432节点
。
它写在[HKCU\Software\ProgName\SomeKeys
]上,而不是[HKCU\Software\Wow6432Node\ProgName\SomeKeys
]
为什么会出现这个问题
请给我一些建议。谢谢这是正常工作的,这是由微软设计的。请阅读MSDN文档: 重定向的密钥映射到
Wow6432Node
下的物理位置
在WOW64下,某些注册表项被重定向。当32位或64位应用程序对重定向的项进行注册表调用时,注册表重定向器会截获该调用并将其映射到该项对应的物理注册表位置。有关详细信息,请参阅
其他注册表项由64位Windows上的32位和64位应用程序共享。对共享键的32位注册表调用不会重定向。相反,注册表项的一个物理副本映射到注册表的每个逻辑视图中
HKCU\Software
下面的用户定义子键是共享的,因此它们没有Wow6432Node
子键
HKLM\Software
下面的用户定义键被重定向,因此它们有一个子键Wow6432Node
。这是正常工作的,由微软设计的。请阅读MSDN文档:
重定向的密钥映射到Wow6432Node
下的物理位置
在WOW64下,某些注册表项被重定向。当32位或64位应用程序对重定向的项进行注册表调用时,注册表重定向器会截获该调用并将其映射到该项对应的物理注册表位置。有关详细信息,请参阅
其他注册表项由64位Windows上的32位和64位应用程序共享。对共享键的32位注册表调用不会重定向。相反,注册表项的一个物理副本映射到注册表的每个逻辑视图中
HKCU\Software
下面的用户定义子键是共享的,因此它们没有Wow6432Node
子键
HKLM\Software
下面的用户定义键被重定向,因此它们有一个Wow6432Node
子键。请注意,有些计算机确实有一个HKCU\Software\Wow6432Node
键,但这只是因为一个bug。它不是一个“真正的”32位节点,只是一个由软件用硬编码路径编写的普通注册表项。有些人仍然很难理解,他们永远不应该直接访问Wow6432Node
键,他们应该让注册表重定向程序代表他们来处理,通过在打开/创建密钥时指定适当的32位/64位视图标志。我拥有的每台计算机都包含此密钥HKEY\U CURRENT\U USER\SOFTWARE\Wow6432Node\Microsoft\Active Setup
,这让我咯咯笑了起来。即使是微软也不能做到这一点!此文档具有相同的oops:。在我的机器上,甚至Embarcadero在一个特定的键中也有相同的OOP:HKEY\U CURRENT\U USER\Software\Wow6432Node\Embarcadero\BDS\9.0\AutoRun\UpdateCheck
。请注意,有些计算机确实有一个HKCU\Software\Wow6432Node
键,但这只是因为有一个bug。它不是一个“真正的”32位节点,只是一个由软件用硬编码路径编写的普通注册表项。有些人仍然很难理解,他们永远不应该直接访问Wow6432Node
键,他们应该让注册表重定向程序代表他们来处理,通过在打开/创建密钥时指定适当的32位/64位视图标志。我拥有的每台计算机都包含此密钥HKEY\U CURRENT\U USER\SOFTWARE\Wow6432Node\Microsoft\Active Setup
,这让我咯咯笑了起来。即使是微软也不能做到这一点!此文档具有相同的oops:。在我的机器上,甚至Embarcadero在一个特定的键中也有相同的OOP:HKEY\U CURRENT\U USER\Software\Wow6432Node\Embarcadero\BDS\9.0\AutoRun\UpdateCheck
。