Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 从注册表项字符串获取值_C#_Registry - Fatal编程技术网

C# 从注册表项字符串获取值

C# 从注册表项字符串获取值,c#,registry,C#,Registry,我试图做一个简单的注册表项读取,但我不能使它工作,即使在阅读了许多文章。我错过了什么?我以管理员身份运行VS2015 导出密钥,如下所示 [HKEY_LOCAL_MACHINE\SOFTWARE\Test Key\dev] "Enable"="TRUE" string myVal = (string)Registry.LocalMachine.GetValue(@"SOFTWARE\Test Key\dev\Enable"); MessageBox.Show(myVal); 我试着读

我试图做一个简单的注册表项读取,但我不能使它工作,即使在阅读了许多文章。我错过了什么?我以管理员身份运行VS2015

导出密钥,如下所示

 [HKEY_LOCAL_MACHINE\SOFTWARE\Test Key\dev]
 "Enable"="TRUE"
 string myVal = (string)Registry.LocalMachine.GetValue(@"SOFTWARE\Test Key\dev\Enable");
 MessageBox.Show(myVal);
我试着读它如下

 [HKEY_LOCAL_MACHINE\SOFTWARE\Test Key\dev]
 "Enable"="TRUE"
 string myVal = (string)Registry.LocalMachine.GetValue(@"SOFTWARE\Test Key\dev\Enable");
 MessageBox.Show(myVal);
我也试过了(还有变奏曲)


我总是返回空值,为什么?

您在64位环境中吗

如果是,请尝试设置
RegistryView
参数,以确保访问64位版本的注册表:

using (var root = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64))
{
    using (var key = root.OpenSubKey(@"SOFTWARE\Test Key\dev", false))
    {
        var myVal= key.GetValue("Enable");
        MessageBox.Show(myVal.ToString());
    }
}
如果仍然无法工作,请尝试使用
RegistryView.Registry32

编辑

实际上,您可以使用
环境动态设置
注册表视图
。IS64位操作系统

using (var root = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, 
                           Environment.Is64BitOperatingSystem
                                      ? RegistryView.Registry64
                                      : RegistryView.Registry32))
{
    using (var key = root.OpenSubKey(@"SOFTWARE\Test Key\dev", false))
    {
        var myVal= key.GetValue("Enable");
        MessageBox.Show(myVal.ToString());
    }
}

这仅在当前平台存在注册表项时有效(可能只是保存在32位版本的注册表中)。

尝试将构建体系结构设置为AnyCPU?它已设置为任何CPU