32位和64位Windows的可移植.reg文件?

32位和64位Windows的可移植.reg文件?,windows,registry,Windows,Registry,我们有一个32位的Windows应用程序,广泛使用注册表。除其他外,我们将用户名/机构和许可证密钥存储在注册表中。一些用户似乎在将数据输入安装程序时遇到问题;对于他们,我们提供了一个包含相关信息的.reg文件,但是在64位Windows 7(以及其他版本)下,这会导致问题,因为32位应用程序无法查看数据。我希望使用32位版本的regedit,但是似乎没有一种可移植的方式在批处理文件中找到它。有人有什么建议吗?如果解决方案失败,我可以编写一个32位应用程序来创建键和值:然后操作系统应该将数据放在3

我们有一个32位的Windows应用程序,广泛使用注册表。除其他外,我们将用户名/机构和许可证密钥存储在注册表中。一些用户似乎在将数据输入安装程序时遇到问题;对于他们,我们提供了一个包含相关信息的.reg文件,但是在64位Windows 7(以及其他版本)下,这会导致问题,因为32位应用程序无法查看数据。我希望使用32位版本的regedit,但是似乎没有一种可移植的方式在批处理文件中找到它。有人有什么建议吗?如果解决方案失败,我可以编写一个32位应用程序来创建键和值:然后操作系统应该将数据放在32位应用程序所在的位置。将找到它们,但最好使用.reg文件


我注意到Windows7(64位)将在HKEY_LOCAL_MACHINE/Software/WOW6432节点下存储条目。我曾尝试在.reg文件中指定此项(使用regedit),但应用程序也找不到键/值(我尝试在HKEY_LOCAL_机器/软件/以及HKEY_LOCAL_机器/软件/Wow6432Node/中存储键,以便于移植).

Windows会自动重定向64位版本Windows中32位应用程序的某些注册表项(类似于
System32
SysWOW64
文件夹的情况)。例如,请求
HKEY_LOCAL_机器/软件/应用程序名称
的32位应用程序将被重定向到
HKEY_LOCAL_机器/软件/WOW6432节点/应用程序名称
(从应用程序的角度来看,该重定向对其访问
HKEY_LOCAL_机器/软件/应用程序名称
)是透明的

由于您直接使用的是
.reg
文件,并且注册表编辑器是64位Windows中的64位应用程序,因此不会发生重定向,这些键将写入注册表的64位部分

这也是32位程序无法找到
HKEY\U LOCAL\u机器/软件/WOW6432Node
的原因,因为它将被重定向到
HKEY\U LOCAL\u机器/软件/WOW6432Node/WOW6432Node

您提出的两种解决方案都应该有效:

  • 使用32位应用程序创建密钥将起作用,因为默认情况下会发生重定向

  • 创建这两个密钥还应作为拥有另一个“垃圾”密钥的费用,在32位窗口中,将使用常规密钥,在64位窗口中,您的应用程序将重定向到
    WOW6432Node
    。这应该不是问题,因为在32位版本的Windows中,
    WOW6432Node
    未使用(它不存在事件)