Frage Wie liest man den Registrierungszweig HKEY_LOCAL_MACHINE in Vista?


Ich habe Anwendungseinstellungen unter dem Zweig HKEY_LOCAL_MACHINE \ SOFTWARE \ MyCompany gespeichert. Die Einstellungen müssen für verschiedene Benutzer gleich sein. Aus diesem Grund befinden sich die Einstellungen nicht unter HKEY_CURRENT_USER. Registrierungswerte sind nur lesen während der Anwendung.

In Windows Vista und aufgrund der UAC können Sie nun folgenden Code zum Lesen von Registrierungswerten nicht mehr verwenden:

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

Wie kann ich die Werte von LocalMachine in meinem Code (C #) lesen?


5
2018-05-18 13:52


Ursprung


Antworten:


Das Problem ist, dass Sie versuchen, einen Schlüssel zu erstellen, nicht lesen. Sie sollten Werte von HKLM problemlos unter Vista lesen können, wenn Sie die entsprechende API verwenden.

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

Beachten Sie den falschen Parameter in obigem. Dies hat den Effekt, dass der Schlüssel in einem Nur-Lese-Modus geöffnet wird. Dies ist die Standardeinstellung für OpenSubKey, aber ich bevorzuge es, explizit zu sein (hauptsächlich, weil ich mich nie an den Standard erinnern kann).


7
2018-05-18 13:55