| 

.NET C# Java Javascript Exception

3
Ich schreibe gerade an einem Programm, dass bestimmte Einträge in der Registry durchsucht und diese dann löschen soll (quasi ein kleines Säuberungsprogramm). Nun such ich hier schon seit längerem nach einer Möglichkeit, Registryeinträge zu löschen. Aktuell sieht meine Funktion so aus:

//Deletes a key
public bool DeleteKey(RegistryKey basekey, string subkey)
{
try
{
basekey.OpenSubKey(subkey, true);
basekey.DeleteSubKeyTree(subkey);
return true;
}
catch (Exception exc)
{
WriteFile("error.log",
"ERROR DELETING KEY " + basekey.ToString() + @"\" + subkey + ": " + exc.Message);
return false;
}
}


Bei basekey kommt der oberste Registrypunkt (also sowas wie HKEY_CLASSES_ROOT) und bei subkey eben der Schlüssel. Jedoch bekomme ich andauernd folgende Meldung (in meiner error.log-Datei):
Cannot delete a subkey tree because the subkey does not exist.


Was kann ich verändern, damit ich endlich meine Registryeinträge löschen kann?
19.08.2011
starki 603 1 8
2 Antworten
0
Das ist relativ klar, denke ich. Bist du sicher, dass der subkey ein direkter Subkey von basekey ist? Das muss nämlich gelten! Er muss also eine Ebene unter basekey sein.
Eine erste Idee, um dein Problem zu lösen (wenn der key ein paar Ebenen unter basekey zu finden ist), ist, dass du dich durch die Subkeys rekursiv nach unten suchst... Mit RegistryKey::GetSubKeyNames etc.
19.08.2011
Eiger 1,9k 2 9
Eiger 1,9k 2 9
0
Das Problem hab ich ganz einfach gelöst: Ich überprüfe eigentlich dann nur, ob es diesen Key überhaupt gibt oder nicht:

RegistryKey k = basekey.OpenSubKey(subkey, true);
if (k != null)
{
basekey.DeleteSubKeyTree(subkey);
}
return true;
26.08.2011
starki 603 1 8

Stelle deine .net-Frage jetzt!
TOP TECHNOLOGIES CONSULTING GmbH