¿Por qué el registro está escrito en una ubicación diferente a la esperada?
Intenté escribir una subclave del registro y su valor correspondiente en el registro como este:
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();
Ahora el problema es que cuando miro la ubicación manualmente (a través de regedit) no puedo ver la carpetaSOFTWARE\Apple\Banana
enHKLM
.
Pero cuando vuelvo a ejecutar el código anterior y depuro, puedo ver que ambosRegistry.LocalMachine.OpenSubKey(subKey)
yrk.GetValue(regKey)
cede los valores antes guardados. Sin embargo, no veo los valores en la ubicación dada a través de regedit. Entonces, al buscar en el registro, puedo ver las claves y los valores anteriores en las siguientes ubicaciones:
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
Debajo de los cuales los valores se mantienen exactamente como los he guardado. Entonces me doy cuenta de que esto es de donde mi aplicación lee el valor, aunque en mi código lo llamo desdeHKLM\SOFTWARE\Apple\Banana\
..
¿Por qué está pasando esto? ¿Está relacionado con el tema de los derechos de acceso?
¿Es este el comportamiento esperado? En el sentido, este valor es muy importante para mí, ¡así que solo estoy sabiendo si hay algún riesgo asociado con la auto-reubicación!
¿Existe una forma adecuada de escribir en el registro para que permanezca en su ubicación exacta?
Mi cuenta es una de administrador, y estoy usando Windows 7 de 32 bits.
Edición: Como llegué a saber, la entrada de registro se almacena en la ubicación de los usuarios actuales en lugar de HKLM. Y cuando solicito el valor de registro de una cuenta diferente, no obtengo el valor. En resumen, no tiene sentido, en primer lugar, guardarlo en HKLM :(