Ich habe den folgenden Code:Registry Umleitung geschieht nicht für HKEY_CURRENT_USER
RegistryKey objRegKey = Registry.CurrentUser.OpenSubKey("SOFTWARE\\MySettings\\Dwm\\Preferences", true);
Ich habe einen Registrierungsschlüssel vorhanden unter: HKEY_CURRENT_USER \ SOFTWARE \ MySettings \ Dwm \ Einstellungen und so funktioniert dies in Ordnung.
Wenn ich den obigen Code ändern von dem lokalen Rechner statt aktuellen Benutzers zu lesen:
RegistryKey objRegKey = Registry.LocalMachine.OpenSubKey("SOFTWARE\\MySettings\\Dwm\\Preferences", true);
und erstellen Sie die folgende Registrierung unter: HKEY_LOCAL_MACHINE \ SOFTWARE \ MySettings \ Dwm \ Einstellungen
Der Code gibt null zurück. Ich verstehe den Grund dafür, dass aufgrund Registry-Umleitung für 32-Bit-Anwendungen auf einem 64-Bit-Betriebssystem versucht, die Registrierung zu lesen: HKEY_LOCAL_MACHINE \ SOFTWARE \ WOW6432NODE \ MySettings \ Dwm \ Einstellungen und da die Registrierung nicht existiert, es gibt null zurück. Die Frage ist, dass die Umleitung nur für HKEY_LOCAL_MACHINE und nicht für HKEY_CURRENT_USER passiert?
Registry-Umleitung auf HKLM-Schlüssel ist keine grundlegende "immer Redirect" -Affäre. Ob sie umgeleitet, reflektiert oder geteilt werden, folgt einer Reihe von [ziemlich verworrenen Regeln] (https://msdn.microsoft.com/en-us/library/windows/desktop/aa384253 (v = vs.85) .aspx). Es gibt einfach viel weniger Regeln für HKCU, hauptsächlich weil die Schlüssel dort für Nicht-Microsoft-Apps verwendet werden und diese Apps bereits wissen, welchen Geschmack sie haben. Nur CLSID- und AppId-Werte werden reflektiert. Du buchstabiert Wow6432Node btw, Buchstabe oh, nicht Null. –
Korrigiert. Danke, dass du es aufgezeigt hast. –