2009-05-18 23 views
5

Tengo la configuración de la aplicación almacenada en la rama HKEY_LOCAL_MACHINE \ SOFTWARE \ MyCompany. La configuración debe ser la misma para diferentes usuarios y esa es la razón por la cual las configuraciones no están bajo HKEY_CURRENT_USER. Los valores de registro son solo leen durante el uso de la aplicación.Cómo leer la rama de registro HKEY_LOCAL_MACHINE en Vista?

Ahora, en Windows Vista y debido a la UAC no se puede usar más siguiente código para leer los valores de registro:

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

¿Cómo puedo leer los valores de rama LocalMachine en mi código (C#)?

Respuesta

7

El problema es que está tratando de crear una clave que no lo lea. Debería poder leer valores de HKLM muy bien en Vista si usa la API adecuada.

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

Observe el parámetro falso en lo anterior. Esto tiene el efecto de abrir la llave en modo de solo lectura. Esta es la configuración predeterminada para OpenSubKey pero prefiero ser explícito (principalmente porque nunca recuerdo el valor predeterminado).

Cuestiones relacionadas