Autor |
Beitrag |
stiftmaster
      
Beiträge: 149
|
Verfasst: Do 04.12.08 10:36
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
      
Beiträge: 2077
Erhaltene Danke: 2
Win XP
Delphi 5 Ent., Delphi 2007 Prof
|
Verfasst: Do 04.12.08 11:01
Vielleicht ein Problem mit den Berechtigungen?
Versuchs mal mit HKEY_CURRENT_USER.
_________________ PROGRAMMER: A device for converting coffee into software.
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: 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 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
      
Beiträge: 8721
Erhaltene Danke: 191
Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
|
Verfasst: 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.
_________________ Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
|
|
jaenicke
      
Beiträge: 19312
Erhaltene Danke: 1747
W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
|
Verfasst: Do 04.12.08 12:58
Das habe ich doch auch geschrieben.
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 
      
Beiträge: 149
|
Verfasst: 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
|
|
Luckie
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Fr 05.12.08 01:14
Und manchmal hilft es schon, wenn man den Rückgabewert prüft und GetLastError aufruft.
|
|
|