【问题标题】:Portable .reg file for 32- and 64- bit Windows?适用于 32 位和 64 位 Windows 的可移植 .reg 文件?
【发布时间】:2018-03-16 09:53:11
【问题描述】:

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

我注意到 Windows 7(64 位)将在 HKEY_LOCAL_MACHINE/Software/Wow6432Node 下存储条目。我尝试在 .reg 文件中指定它(使用 regedit),但是应用程序也找不到键/值(我尝试将键存储在 HKEY_LOCAL_MACHINE/Software/ 以及 HKEY_LOCAL_MACHINE/Software/Wow6432Node/ 中努力便携)。

【问题讨论】:

    标签: windows registry


    【解决方案1】:

    Windows 会自动为 64 位版本的 Windows for having separate settings for 32 and 64 bits programs 中的 32 位应用程序重定向一些注册表项(类似于 System32 和 SysWOW64 文件夹的情况)。例如,请求 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 中未使用(它不存在事件)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-12-12
      • 2011-03-11
      • 2011-10-21
      • 1970-01-01
      • 2013-09-11
      • 2011-01-31
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多