为任何 CPU 部署应用程序.阅读HKLM注册表

本文关键字:阅读 HKLM 注册表 应用程序 部署 任何 CPU | 更新日期: 2023-09-27 18:32:18

我有一个 .NET 3.5 应用程序,它始终在 x86 (XP) 上运行。我现在需要这个程序在 x64 (Win7) 上运行。此应用程序的构建是任何 CPU,因此它应该在 x64 上运行。在注册表编辑器>安装项目中,我在HKEY_LOCAL_MACHINE''软件''公司''产品''AppPath中创建一个名为AppPath的注册表项。

在 64 位计算机上,我的安装项目将此密钥安装在 HKEY_LOCAL_MACHINE''软件''Wow6432Node''Company''Product''AppPath

我的第一个问题是,如果我将安装项目的 TargetPlatform 更改为 x64,为什么注册表项会添加到 Wow6432Node 子系统中?如果我理解正确针对 x64 应该在 x64 注册表中安装密钥,而不是 Wow6432Node 子系统。显然,我还没有完成针对 x64 所需的一切。我可能错过了什么会导致程序安装,就好像它是 32 位一样,即使安装项目的目标平台为 x64?

我的第二个问题是我是否有代码读取注册表,如下所示:

clientPbDir = Registry.LocalMachine.OpenSubKey("Software''Company''Product").GetValue("AppPath").ToString();

如何使它同时适用于 x86 和 x64?

这篇文章有点回答了这个问题。

读取注册表和Wow6432节点项

但是,如果可以避免的话,我宁愿不必将我的项目编译为 x86 只是为了能够读取 x86 和 x64 上的注册表。我希望能够充分利用 x64 性能。

为任何 CPU 部署应用程序.阅读HKLM注册表

您可能错过了此链接:http://www.rhyous.com/2011/01/24/how-read-the-64-bit-registry-from-a-32-bit-application-or-vice-versa/

看起来它执行了您想要执行的操作,即从 x86 程序读取 x64 注册表。