c# - 如何在 Vista 中读取注册表分支 HKEY_LOCAL_MACHINE?

标签 c# windows-vista registry

我将应用程序设置存储在 HKEY_LOCAL_MACHINE\SOFTWARE\MyCompany 分支下。不同用户的设置必须相同,这就是设置不在 HKEY_CURRENT_USER 下的原因。注册表值在应用程序使用期间只读

现在,在 Windows Vista 中,由于 UAC,您不能再使用以下代码读取注册表值:

RegistryKey myKey = Registry.LocalMachine.CreateSubKey
        ("SOFTWARE\\MyCompany\\MyAppName");

如何在我的代码 (C#) 中读取 LocalMachine 分支的值?

最佳答案

问题是您正在尝试创建一个未读取的 key 。如果您使用适当的 API,您应该能够在 Vista 上从 HKLM 读取值。

RegistryKey myKey = Registry.LocalMachine.OpenSubKey(
  @"Software\MyCompany\MyAppName", 
  false);

注意上面的 false 参数。这具有以只读模式打开 key 的效果。这是 OpenSubKey 的默认设置,但我更喜欢显式设置(主要是因为我永远记不起默认设置)。

关于c# - 如何在 Vista 中读取注册表分支 HKEY_LOCAL_MACHINE?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/877851/

相关文章:

windows - 多宿主系统上的 UDP 广播

c# - 服务可以写入注册表 [HKLM]

JavaScript:在没有 64 位重定向的情况下读取注册表?

windows - 如何在 WiX 片段中获得编辑注册表 CLSID 的提升权限

c# - 可为空的对象必须有一个值

c# - 在没有 for 循环的情况下从 List 创建 DataTable 的最快方法

java - 使用java jdbc在vista上连接mysql,通讯异常,尝试了常见的答案

registry - 私有(private) Docker 注册表和高可用性

c# - 如何将更改从开发上传到生产

C# 使用 LINQ 和 Nullable Boolean