C# 从注册表项字符串获取值
我试图做一个简单的注册表项读取,但我不能使它工作,即使在阅读了许多文章。我错过了什么?我以管理员身份运行VS2015 导出密钥,如下所示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); 我试着读
[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