我们有一个.net 4.0应用程序,它使用了几个注册表项和一个vs2010设置&部署项目,创建这些键@ setup
问题 - (默认)RegEdit显示密钥存在,但.net代码在OpenSubKey上返回null,路径正确(包括\)
事实证明,这是由于32&每个KB305097
的64位注册表需要代码,例如
RegistryKey someFunc()
{
var r64o32 = RegistryKey.OpenBaseKey(Microsoft.Win32.RegistryHive.LocalMachine,
Environment.Is64BitOperatingSystem ? RegistryView.Registry64 :
RegistryView.Registry32);
return r64o32.OpenSubKey(regKey);
}
但是我无法测试上面的代码,因为我没有32位机器可用但是应用程序也需要在32位机器上可用
所以寻求帮助 -
答案 0 :(得分:0)
您在使用RegistryView
时不需要在OpenBaseKey
上执行特殊的大小写,无论您如何编译应用程序,都要求提供注册表的特定视图
RegistryKey r = Microsoft.Win32.RegistryKey.OpenBaseKey(RegistryHive.LocalMachine,
RegistryView.Registry64);
还要记住,如果你使用的是32位机器,那么OpenBaseKey将会回退到Registry32