Dlaczego rejestr jest zapisany w innym miejscu niż oczekiwano?

Próbowałem napisać podklucz rejestru i odpowiadającą mu wartość do rejestru w ten sposób:

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();

Teraz problem polega na tym, że gdy przeglądam lokalizację ręcznie (przez regedit), nie widzę folderuSOFTWARE\Apple\Banana wHKLM.

Ale kiedy ponownie uruchomię powyższy kod i debuguję, widzę, że obaRegistry.LocalMachine.OpenSubKey(subKey) irk.GetValue(regKey) daje wcześniej zapisane wartości. Jednak nie widzę wartości w danej lokalizacji za pomocą regedit. Tak więc podczas przeszukiwania rejestru widzę powyższe klucze i wartości w następujących lokalizacjach:

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

W obu przypadkach wartości pozostają dokładnie takie, jak zapisałem. Zdaję sobie sprawę z tego, że moja aplikacja odczytuje wartość, chociaż w moim kodzie nazywam jąHKLM\SOFTWARE\Apple\Banana\..

Dlaczego to się dzieje? Czy dotyczy to kwestii praw dostępu?

Czy to oczekiwane zachowanie? W tym sensie ta wartość jest dla mnie bardzo ważna, więc po prostu wiem, czy istnieje ryzyko związane z automatyczną relokacją!

Czy istnieje odpowiedni sposób zapisu do rejestru, aby pozostawał w dokładnej lokalizacji.

Moje konto jest administratorami i używam 32-bitowych okien 7.

Edytuj: Jak dowiedziałem się, wpis rejestru jest przechowywany w bieżącej lokalizacji użytkowników, a nie w HKLM. A kiedy sprawdzam wartość reg z innego konta, nie otrzymuję wartości. Krótko mówiąc, nie ma sensu przede wszystkim zapisywać go w HKLM :(

questionAnswers(2)

yourAnswerToTheQuestion