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.

Delphi-Quelltext
1:
if OpenKey... then                    
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

user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
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.