Pregunta

Así que usé Regedit para agregar lo siguiente al registro en mi estación de trabajo:

HKLM Software foo bar

Bar tiene un par AK/V de "WTF"/"IDK". Verifiqué que estos cambios "tomaron" cerrando Regedit y reabriéndolo. ¡Oye, todavía están ahí! Hinchar.

RegistryKey key = Registry.LocalMachine.OpenSubKey(@"SOFTWARE\Foo\Bar");

if (key != null)
{
    var = key.GetValue("wtf").ToString();
}

El problema es que la clave es nula.

Cuando. . .

Registry.LocalMachine.OpenSubKey("Software").GetSubKeyNames()

Se llama, Foo no aparece entre los tantos nombres de subprocesos.

Entonces, obviamente me estoy perdiendo algo estúpido. ¿Qué específicamente me estoy perdiendo?

¿Fue útil?

Solución

Si está ejecutando un proceso de 32 bits en una versión de 64 bits de Windows, el proceso de 32 bits (su aplicación de prueba) no siempre puede ver las claves que creó usando Regedit de 64 bits.

Intente ejecutar su aplicación como 64 bits o use Regedit para abrir la tecla usando la ruta HKLM\SOFTWARE\Wow6432Node\Foo\Bar.

Puedes leer más sobre Datos de aplicación de 32 bits y 64 bits en el registro en msdn.

Otros consejos

¿Podría ser un problema X64? Al leer el registro en un proceso X86, se le redirige al software wow6432node.

Intenta abrirlo solo para leer Registry.LocalMachine.OpenSubKey("Software", false).GetSubKeyNames() Probablemente solo obtenga aquellos en los que puede escribir.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top