我似乎无法让我的程序正确读取注册表。以下是我当前的代码,但我也尝试过其他代码。它编译并运行,但总是返回零。 (我在注册表中仔细检查过,该值设置为 1。“0x000000001(1)” 我尝试访问的 key 是一个 DWord,该值只能是 < strong>1 或 0。我以 admin 身份运行,因此我拥有完全访问权限。我做错了什么?
Registry.LocalMachine.OpenSubKey( "SOFTWARE", true );
RegistryKey masterKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Authentication\\LogonUI\\Background");
string value = "";
if( masterKey != null )
{
value = masterKey.GetValue( "OEMbackground", 2 ).ToString();
}
masterKey.Close();
myLabel.Text=value;
最佳答案
我怀疑您正在 64 位计算机上运行,但作为 32 位进程运行。该值可能不存在于您的 32 位注册表中,而是存在于 64 位注册表中(我的注册表中当然就是这种情况)。您可能需要访问 64 位配置单元才能读取该值。 32 位进程应该不会有问题。
const string keyPath = @"SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\Background";
using (var hklm64 = RegistryKey.OpenBaseKey(RegistryHive.LocalMachine, RegistryView.Registry64))
using (var key = hklm64.OpenSubKey(keyPath))
{
var value = (int)key.GetValue("OEMBackground", 2);
}
关于visual-studio-2010 - 获取注册表值 C#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9013804/