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

时间:2009-05-18 13:52:26

标签: 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分支的值?

1 个答案:

答案 0 :(得分:7)

问题是您正在尝试创建一个不读取它的密钥。如果您使用适当的API,您应该可以在Vista上阅读HKLM中的值。

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

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