2017-10-04 129 views
0

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

我注意到Windows 7(64位)将存储在HKEY_LOCAL_MACHINE/Software/Wow6432Node下的条目。我已经尝试在.reg文件中指定这个(使用regedit),但是应用程序找不到键/值(我尝试在HKEY_LOCAL_MACHINE/Software /以及HKEY_LOCAL_MACHINE/Software/Wow6432Node/in下存储密钥努力成为便携式)。

回答

0

Windows自动将32位应用程序的某些注册表项重定向到64位版本的Windows for having separate settings for 32 and 64 bits programs(与System32SysWOW64文件夹发生的情况类似)。例如,要求HKEY_LOCAL_MACHINE/Software/App Name的32位应用程序将被重定向到HKEY_LOCAL_MACHINE/Software/WOW6432Node/App Name(重定向对于应用程序是透明的,从其访问HKEY_LOCAL_MACHINE/Software/App Name的角度来看)。

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

这也是你的32位程序找不到HKEY_LOCAL_MACHINE/Software/WOW6432Node的原因,因为它会被重定向到HKEY_LOCAL_MACHINE/Software/WOW6432Node/WOW6432Node

无论你提出的解决方案应该工作:

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

  • 创建这两个键也应该用作另一个“垃圾”键的代价,在32位Windows中将使用常规键,而在64位Windows中,您的应用程序将被重定向到WOW6432Node。这应该不是问题,因为WOW6432Node在32位版本的Windows中未使用(它不存在事件)。