繁体   English   中英

Registry API 32 vs 64bit,以及VS2010设置

[英]Registry API 32 vs 64bit, and VS2010 setup

我们有一个使用几个注册表项的.net 4.0应用程序,以及一个在安装程序中创建这些项的vs2010安装和部署项目

问题-(默认)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位计算机上可用

所以寻求帮助-

  1. 上面的方法对64 / 32bit都正确吗?
  2. vs2010安装程序项目创建的安装程序是否根据计算机在64/32注册表上安装了定义的注册表项?
  3. 还有其他陷阱吗?

使用OpenBaseKey ,不需要在RegistryView上做特殊的大小写,这是在询问注册表的特定视图,而不管您如何编译应用程序

RegistryKey r = Microsoft.Win32.RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, 
                                                        RegistryView.Registry64);

还请记住,如果您使用的是32位计算机,则OpenBaseKey将仅回退到Registry32

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM