Pregunta

Estoy tratando de eliminar una clave de registro, hasta ahora probé ese código que parece ser normal:

        RegistryKey delete = Registry.CurrentUser.OpenSubKey("SOFTWARE\\Microsoft\\Windows NT\\CurrentVersion\\Image File Execution Options");
        delete.DeleteSubKeyTree("MyPaintApp");
        delete.Close();

Pero recibo el error:

Unhandled Exception: System.NullReferenceException: Object reference not set to an instance of an object.

Busqué en Google mi problema y busqué a StackOverflow y apliqué algunas soluciones, pero todos parecen estar usando el mismo método que estoy usando, así que estoy harto y espero que puedas ayudarme con eso.

EDITAR: Lo siento, usé CurrentUser en lugar de LocalMachine en mi ruta RegistryKey, ese era el problema.

¿Fue útil?

Solución

La documentación para OpenSubKey Estados:

Valor de retorno
Tipo: Microsoft.win32.RegistryKey
La subclave solicitó, o NULL si la operación falló.

Por lo tanto, abrir la clave parece haber fallado. lo más probable es que no exista:

Si no se puede encontrar la subclave especificada, entonces se devuelve NULL.

En mi compensación win7, el Image File Execution Options La subclave no existe.


Pero incluso cuando arregles esa parte, todavía fallará. La sobrecarga de OpenSubKey que está utilizando está documentado como:

Recupera una subterránea como solo lectura.

Entonces deberías usar OpenSubKey(path,true), como lo recomienda @lasseespeholt.

http://msdn.microsoft.com/en-us/library/z9f66s0a.aspx

Otros consejos

Por favor intente usar Registry.CurrentUser.DeleteSubKeyTree(fullSubKeyPath);.

Detalles aquí: RegistryKey.DeletesubKeyTree Método (cadena).

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