Ich möchte einen spezifischen Wert (Typ REG_SZ
) in der Registrierung für beide, x64 und x86 bearbeiten, aber die SetValue-Methode ändert nicht den Wert für x86. Das x64 funktioniert gut. Dies ist mein Code:Registry.SetValue funktioniert nicht für x86
RegistryKey regKeySpecific = RegistryKey.OpenBaseKey(
RegistryHive.LocalMachine, RegistryView.Registry32);
RegistryKey registryKey = regKeySpecific.OpenSubKey(
"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FolderDescriptions\\{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}\\PropertyBag", true);
registryKey.SetValue("ThisPCPolicy", "Show", RegistryValueKind.String);
registryKey.Close();
Ich bin die RegistryView.Registry32
Parameter in der ersten Codezeile mit dem Wert in x86-Registrierung zu ändern, aber das funktioniert nicht.
Das Problem ist identifiziert, aber nicht gelöst. Dieser Code ändert sich immer den Schlüssel in der x64 (WOW6432Node) Registrierung:
"SOFTWARE\\WOW6432Node\\Microsoft\\Windows\\CurrentVersion\\Explorer\\FolderDescriptions\\{B4BFCC3A-DB2C-424C-B029-7FE99A87C641}\\PropertyBag"
@HansPassant Schauen Sie sich meinen Code an. Ich verwende RegistryKey.OpenBaseKey oder ist das falsch? – Struct
Okay, warum verwenden Sie Registry32, wenn Sie Registry64 meinten? Explorer ist ein 64-Bit-Programm. Der beste Weg, dies zu tun, ist, dass Ihr Programm auch im 64-Bit-Modus läuft. Klicken Sie mit der rechten Maustaste auf Ihr EXE-Projekt> Eigenschaften> Registerkarte Kompilieren> Platform target = AnyCPU and Prefer 32-bit unmarked. –
Das stimmt. Aber ich möchte die ThisPC-Ordner aus dem Explorer entfernen. Wenn Sie eine x86-Anwendung wie Notepad ++ verwenden und ein Dokument öffnen, sind die Ordner bereits vorhanden. Deshalb muss ich die Schlüssel vom x64 und vom x86 Standort bearbeiten – Struct