Warum wird die Registrierung an einem anderen Ort als erwartet geschrieben?

Ich habe versucht, einen Registrierungsunterschlüssel mit dem entsprechenden Wert für die Registrierung wie folgt zu schreiben:

const string subKey = @"SOFTWARE\Apple\Banana\";
const string regKey = "pip";

var rk = Registry.LocalMachine.OpenSubKey(subKey);
if (rk == null)
    rk = Registry.LocalMachine.CreateSubKey(subKey);

var rv = rk.GetValue(regKey);
if (rv == null)
    rk.SetValue(regKey, "XXX");

return rv.ToString();

Jetzt ist das Problem, dass ich den Ordner nicht sehen kann, wenn ich manuell (über regedit) in den Speicherort schaueSOFTWARE\Apple\Banana imHKLM.

Aber wenn ich den obigen Code erneut starte und debugge, kann ich beides sehenRegistry.LocalMachine.OpenSubKey(subKey) undrk.GetValue(regKey) liefert die zuvor gespeicherten Werte. Die Werte am angegebenen Ort sehe ich jedoch nicht über regedit. Wenn ich die Registrierung durchsuche, kann ich die obigen Schlüssel und Werte an folgenden Stellen sehen:

HKEY_CURRENT_USER\Software\Classes\VirtualStore\MACHINE\SOFTWARE\Apple\Banana

HKEY_USERS\S-1-5-21-44266131-1313801407-2392705078-1000\Software\Classes\VirtualStore\MACHINE\SOFTWARE\Apple\Banana

Unter beiden bleiben die Werte genau so, wie ich sie gespeichert habe. Mir ist also klar, dass dies der Ort ist, an dem meine App den Wert liest, obwohl ich ihn in meinem Code aufrufeHKLM\SOFTWARE\Apple\Banana\..

Warum passiert dies? Hängt es mit dem Problem der Zugriffsrechte zusammen?

Ist das erwartetes Verhalten? In dem Sinne ist dieser Wert für mich sehr wichtig, daher weiß ich nur, ob mit der automatischen Verlagerung ein gewisses Risiko verbunden ist!

Gibt es eine ordnungsgemäße Schreibweise für die Registrierung, damit sie an ihrem genauen Speicherort verbleibt?

Mein Konto ist ein Administrator, und ich verwende 32-Bit-Windows 7.

Bearbeiten: Wie ich erfahren habe, wird der Registrierungseintrag nicht in HKLM, sondern im aktuellen Benutzerstandort gespeichert. Und wenn ich den Registrierungswert von einem anderen Konto abfrage, erhalte ich den Wert nicht. Kurz gesagt, es macht keinen Sinn, es zuerst in HKLM zu speichern :(

Antworten auf die Frage(2)

Ihre Antwort auf die Frage