2012-04-25 51 views
0

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

在64位机器我的设置项目,如果我改变我的设置项目上投放安装在HKEY_LOCAL_MACHINE \ SOFTWARE \ Wow6432Node \公司\产品\ APPPATH

我的第一个问题,这个关键是到x64为什么注册表键被添加到Wow6432Node子系统?如果我理解正确,则将x64定位到x64注册表中而不是Wow6432Node子系统。显然,我没有完成所有必需的目标x64。我可能错过了什么,即使安装项目具有x64的目标平台,也会导致程序安装为32位。

我的第二个问题是,如果我有一些代码读取注册表如下:

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

我怎样才能使这项工作x86和x64的?

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

Reading the registry and Wow6432Node key

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

回答