2010-04-28 11 views
12

Ich versuche, eine schnelle App zu schreiben, um einige Registrierungsschlüssel zu ändern. Wenn ich über RegEdit browse, kann ich die Schlüssel ohne Probleme ändern und löschen.DeleteSubKey UnauthorizedAccessException

Aber wenn ich versuche, RegistryKey.DeleteSubKey() zu verwenden, löst es eine UnauthorizedAccessException.

Gibt es eine Möglichkeit, die Berechtigungen dafür zu erhalten? Warum gibt es auch ein Problem, wenn mein Benutzerkonto offensichtlich Zugriff auf die Änderungen hat?

Edit:

Hier einige Code

RegistryKey reg; 

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

Winform oder Web-App? – curtisk

+1

Und wie öffne ich die Taste vor dem Anruf zu löschen? Können Sie die paar Codezeilen vor dem Aufruf von DELETESUBKey anzeigen? – curtisk

+0

Sie könnten abgelehnt werden, wenn Sie versuchen, den Unterschlüssel zu löschen, wenn Sie einen offenen Griff haben (wie curtisk vorgeschlagen), oder wenn der Schlüssel nicht frei von Werten ist ... – ewall

Antwort

36

dies stattdessen versuchen, öffnen Sie es zunächst als Lese-/Schreib statt read-only:

RegistryKey reg; 

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

* massiver Klaps auf die Stirn * - Danke! –

+1

Ich vergesse das jedes Mal zu tun. –

+1

Versuchen Sie für Compact Framework-Benutzer: ** reg = Registry.CurrentUser.OpenSubKey (@ "\", true); ** –

Verwandte Themen