1

我有一个用 C# 编写的 .NET 组件,它需要在 HKLM 配置单元下注册一些注册表值。我希望这个组件可以安装在运行适当 Windows 风格的 x86(32 位)和 x64(64 位)机器上。在 64 位系统上,我想确保该组件可以被 32 位和 64 位托管进程使用。我暂时坚持使用 Visual Studio 的部署项目。

我想要的是我的安装程序,当在 64 位系统上运行时,将其注册表项放在 下HKLM/Software/Blablah,以便在 64 位进程中运行时,我的组件可以找到它的全局配置设置。但是,如果我的组件由运行在同一台机器上的 32 位进程托管,那么它将从它认为相同的密钥中读取,但 Wow64 将转换为 HKLM/Software/Wow6432Node/Blablah。

是否可以编写我的 64 位安装程序,以便:

  • 它被标记为 x64 安装程序
  • HKLM/Software/Blablah它为了 64 位进程的利益而写下条目
  • HKLM/Software/Wow6432Node/Blablah为了在同一台机器上运行 32 位进程,它会在下写入这些条目的精确副本 。

我猜是因为我已将安装程序标记为 x64,我将被迫为 32 位系统编写另一个单独的安装程序,它只写入HKLM/Software/Blablah.

4

1 回答 1

2

通常的做法是同时安装 32 位和 64 位安装包。在 32 位机器上只运行 32 位包,在 64 位机器上运行两者。

尝试自己处理所有注册表和文件重定向是一场噩梦,最好在 64 位机器上安装 32 位软件包并让系统为您进行重定向。无论如何,您都必须为 32 位机器生成 32 位软件包,因此无需额外工作。

于 2011-06-04T21:31:41.347 回答