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

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

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

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

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

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

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

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