2010-04-28 9 views
12

Estoy tratando de escribir una aplicación rápida para modificar algunas claves de registro. Cuando estoy navegando a través de RegEdit, puedo modificar y eliminar las claves sin problemas.DeleteSubKey UnauthorizedAccessException

Pero cuando intento usar RegistryKey.DeleteSubKey() arroja un UnauthorizedAccessException.

¿Hay alguna manera de obtener los privilegios para hacer esto? Además, ¿por qué habría un problema si mi cuenta de usuario obviamente tiene acceso para realizar los cambios?

Editar:

Aquí hay un código

RegistryKey reg; 

try 
{ 
    reg = Registry.CurrentUser.OpenSubKey(BaseKey); 
    reg.DeleteSubKey("{" + Item.Guid.ToString() + "}"); 
} 
catch 
{ 
    return false; 
} 
+0

Winform o aplicación web? – curtisk

+1

¿Y cómo están abriendo la llave antes de la llamada para eliminar? ¿Puedes mostrar las pocas líneas de código antes de llamar a deletesubkey? – curtisk

+0

Se le puede rechazar al tratar de eliminar la clave secundaria si tiene un controlador abierto (como se sugirió curtisk), o posiblemente si la clave no está vacía de valores ... – ewall

Respuesta

36

Prueba este lugar, abrir inicialmente como lectura/escritura en lugar de sólo lectura:

RegistryKey reg; 

try 
{ 
    reg = Registry.CurrentUser.OpenSubKey(BaseKey, true); //<--over here! 
    reg.DeleteSubKey("{" + Item.Guid.ToString() + "}"); 
} 
catch 
{ 
    return false; 
} 
+2

* golpe masivo en la frente * - ¡Gracias! –

+1

Me olvido de hacer esto cada vez. –

+1

Para usuarios de Compact Framework, pruebe: ** reg = Registry.CurrentUser.OpenSubKey (@ "\", true); ** –

Cuestiones relacionadas