0

我有一个始终在 x86 (XP) 上运行的 .NET 3.5 应用程序。我现在需要这个程序在 x64 (Win7) 上运行。此应用程序的构建是 Any CPU,因此它应该在 x64 上运行。在我的设置项目 > 注册表编辑器中,我在 HKEY_LOCAL_MACHINE\Software\Company\Product\AppPath 中创建了一个名为 AppPath 的注册表项。

在 64 位机器上,我的安装项目将此密钥安装在 HKEY_LOCAL_MACHINE\Software\Wow6432Node\Company\Product\AppPath

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

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

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

我怎样才能使这适用于 x86 和 x64?

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

读取注册表和 Wow6432Node 键

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

4

1 回答 1

0

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

看起来它做了您想做的事情,即从 x64 程序读取 x86 注册表。

于 2012-04-25T16:24:11.470 回答