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

Cla*_*ack 5 c# registry windows-vista

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

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

RegistryKey myKey = Registry.LocalMachine.CreateSubKey
        ("SOFTWARE\\MyCompany\\MyAppName");
Run Code Online (Sandbox Code Playgroud)

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

Jar*_*Par 7

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

RegistryKey myKey = Registry.LocalMachine.OpenSubKey(
  @"Software\MyCompany\MyAppName", 
  false);
Run Code Online (Sandbox Code Playgroud)

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