Entwickler-Ecke
Dateizugriff - Registry-Key löschen will nicht klappen
stiftmaster - Do 04.12.08 10:36
Titel: Registry-Key löschen will nicht klappen
Hallo,
ich verzweifel hier an einem Problem und komme mir vor wie n' kleiner Anfänger - aber ich rall einfach net, was ich falsch mache :-(
Ich möchte einen RegKey aus der Registry löschen. Dazu habe ich folgenden Code geschrieben:
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| FReg := TRegistry.Create; FReg.RootKey := HKEY_LOCAL_MACHINE FReg.OpenKey('Software\MeinProgramm', False); if FReg.ValueExists('test') then Test := FReg.DeleteKey('test'); FReg.CloseKey; |
Die Zeile "FReg.ValueExists('test')" gibt ein true zurück => der Key muss existieren und sollte daher auch gelöscht werden können. Der Wert "Test" ist noch dem angeblichen Löschen auf False und der Eintrag existiert weiterhi in der Registry.
Hat jemand n' Idee, wo mein Fehler liegen könnte? Bin leicht verwundert und am Verzweifeln :-)
Dankend
Stefan
Xentar - Do 04.12.08 11:01
Vielleicht ein Problem mit den Berechtigungen?
Versuchs mal mit HKEY_CURRENT_USER.
jaenicke - Do 04.12.08 11:25
Du schaust nach ob ein Wert existiert, und versuchst danach einen Schlüssel zu löschen...
Wert: ValueExists --> DeleteValue
Schlüssel: KeyExists --> DeleteKey
Du solltest den Rückgabewert von OpenKey beachten.
Weil wenn der Schlüssel nicht geöffnet werden kann gibt es sonst Fehler, insbesondere wenn er nicht erstellt werden soll, wenn er nicht existiert (false).
BenBE - Do 04.12.08 12:16
Ferner prüfst Du, ob ein Wert existiert und nicht der Schlüssel, den Du löschen möchtest. Siehe KeyExists.
jaenicke - Do 04.12.08 12:58
Das habe ich doch auch geschrieben. :gruebel:
Zusammen mit den beiden jeweils zusammengehörenden Funktionen.
Was er nun löschen will, weiß ich ja nicht, aber da ValueExists ihm true zurückgegeben hatte war ich eher davon ausgegangen, dass ValueExists schon richtig war, und DeleteKey falsch. ;-)
stiftmaster - Do 04.12.08 15:42
jaenicke hat folgendes geschrieben : |
Was er nun löschen will, weiß ich ja nicht, aber da ValueExists ihm true zurückgegeben hatte war ich eher davon ausgegangen, dass ValueExists schon richtig war, und DeleteKey falsch. ;-) |
Manchmal könnte ich mich ja auch in Hintern treten - wenn Blödheit weh tun würde...
Ich verkrieche mich heute in an ganz tiefes Loch und schäme mich für den Rest des Tages :-) Vielen Dank für eure Hilfe. Es ist mir mal wieder ein Licht aufgegangen.
Bis dahin
Stefan
Delete - Fr 05.12.08 01:14
Und manchmal hilft es schon, wenn man den Rückgabewert prüft und GetLastError aufruft.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!