visual-studio-2010 - 获取注册表值 C#

标签 visual-studio-2010 c#-4.0 registry

我似乎无法让我的程序正确读取注册表。以下是我当前的代码,但我也尝试过其他代码。它编译并运行,但总是返回零。 (我在注册表中仔细检查过,该值设置为 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/

相关文章:

visual-studio-2010 - SQL Server 未找到序列化程序集

c# - 为什么 ToList<Interface> 不适用于值类型?

batch-file - 为什么其他文件夹路径也使用 SetX 添加到系统 PATH 而不仅仅是指定的文件夹路径?

c - RegQueryValue 失败但 RegQueryValueEx 返回一个值

delphi - 非管理模式下的注册表访问

.net - 如何将一列添加到 rdlc 的数据集中并让它出现在报告中以供使用?

c++ - 基于 Ribbon 的 MFC 应用程序是否可以在 Windows pre-Vista/7 上运行?

visual-studio-2010 - Visual Studio 停止重建依赖项目

c++ - C++ 中的 clr 托管 - 程序集路径

c# - 从数据集中获取 byte[] 并压缩