我们有一个 .net 4.0 应用程序,它使用了几个注册表项和一个 vs2010 设置和部署项目,它创建了这些键 @ setup
问题 - (默认)RegEdit 显示密钥存在,但 .net 代码在 OpenSubKey 上返回 null 且路径正确(包括 \ )
事实证明,这是由于每个 KB305097的 32 位和 64 位注册表
这需要代码,例如
RegistryKey someFunc()
{
var r64o32 = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine,
Environment.Is64BitOperatingSystem ? RegistryView.Registry64 :
RegistryView.Registry32);
return r64o32.OpenSubKey(regKey);
}
但是我无法测试上面的代码,因为我没有可用的 32 位机器,但该应用程序也需要在 32 位机器上可用
所以寻求帮助 -
- 上述方法对 64/32 位都正确吗?
- vs2010 安装项目创建的安装程序是否在基于机器的 64/32 注册表上安装定义的注册表项?
- 还有其他问题吗?