Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   TRegistry.DeleteKey - Löschen von Unterschlüsseln (https://www.delphipraxis.net/176923-tregistry-deletekey-loeschen-von-unterschluesseln.html)

SteffenSchm 4. Okt 2013 12:56

TRegistry.DeleteKey - Löschen von Unterschlüsseln
 
Hallo,

ich möchte beim Deinstallieren meines Delphi-Programms auch die entsprechenden Einträge aus der Registry löschen.

In der Hilfe von Delphi zu DeleteKey steht: "Unter Windows NT müssen die Unterschlüssel explizit mit einzelnen Aufrufen von DeleteKey entfernt werden."
Ich nehme mal an, das gilt auch für höhere Windows-Versionen.

Aber was passiert den, wenn ich einen Haupschlüssel lösche ohne die Unterschlüssel zu löschen? Funktionieren tut das schon (unter Win7), und in der Registry sind die Unterschlüssel auch weg. Wo sollen sie auch hängen, wenn der Hauptscghlüssel weg ist?
Sind die Unterschlüssel dann noch in der Registry vorhanden und können in der Baumstruktur nur nicht angezeigt werden?
Oder ist es doch nicht notwendig alle Unterschlüssel einzeln zu löschen?

Vielleicht kennt sich jemand damit aus.
Danke!

himitsu 4. Okt 2013 13:26

AW: TRegistry.DeleteKey - Löschen von Unterschlüsseln
 
Es passiert nichts, da der Schlüssel nicht gelöscht werden kann (Fehlermeldung beim Löschen), wenn etwas in ihm drin ist.

Wenn es in neueren Windowsversionen doch gelöscht werden sollte, also wenn das funktioniert (ohne Fehlermeldung), dann würden auch die Unterschlissel und Werte mit gelöscht.

SteffenSchm 4. Okt 2013 14:11

AW: TRegistry.DeleteKey - Löschen von Unterschlüsseln
 
Hallo himitsu,

danke für die schnelle Antwort.

Bei Win7 ist es zumindest so: Wenn ich den Hauptschlüssel lösche sind auch alle Unterschlüssel weg. Fehlermeldung kommt keine. Ich denke ich lasse das jetzt so.

musicman56 4. Okt 2013 16:56

AW: TRegistry.DeleteKey - Löschen von Unterschlüsseln
 
Hallo Steffen,

ich habe auch mein eigenes Indtallations/Deinatallationsprogramm im Einsatz, und lösche auch mit "DeleteKey". Genau habe ich es nicht mehr im Kopf, ob und wenn ja unter welchen Betriebssystemen das Löschen eines Haupt-Schlüssels auch die Unterschlüssel löscht. Ich bin mir aber absolut sicher, dass dies NICHT mit allen Betriebssystemen funktionieren wird. Also werden bei der Deinstallation deiner Software irgendwann mal Reste in der Registry zurückbleiben. Ich an deiner Stelle würde es darum so machen, wie in der Hilfe beschrieben. Der Mehraufwand (rekursiver Aufruf einer Prozedur welche alle Unterschlüssel zuvor löscht) ist doch marginal.

SteffenSchm 4. Okt 2013 16:58

AW: TRegistry.DeleteKey - Löschen von Unterschlüsseln
 
O.k. Danke für den Hinweis.
Werde ich mir alos die (kleine) Mühe machen.

himitsu 4. Okt 2013 17:14

AW: TRegistry.DeleteKey - Löschen von Unterschlüsseln
 
Delphi-Quellcode:
function TRegistry.DeleteKey(const Key: string): Boolean;
sieht so aus, als wenn darin eine Schleife verbaut ist, welche Unterschlüssel löscht, aber ich weiß nicht seit wann das da eingebaut ist.

musicman56 4. Okt 2013 18:56

AW: TRegistry.DeleteKey - Löschen von Unterschlüsseln
 
stimmt, du hast recht, aber

a) er hat ja noch 2010 und da war das soweit ich weiß noch nicht
b) wenn die Unterschlüssel weitere Unterschlüssel enthalten, werden diese nicht gelöscht, zumindest nicht bei XE2 (soeben ausprobiert unter Win-7 64-Bit)

SteffenSchm 8. Okt 2013 09:02

AW: TRegistry.DeleteKey - Löschen von Unterschlüsseln
 
Hallo himitsu und musicman56,

danke für Eure Antworten.

Habe gerde mal nachgeschaut. In Delphi2010 löscht DeleteKey auch über eine Schleife alle Unterschlüssel. Da in dieser Schleife dann DeleteKey wieder aufgerufen wird, dürften dadurch auch allel Unter-Unter- und Unter-Unter-Unter- und ...-Schlüssel gelöscht werden.

Und an meinem Rechner (Win7) funktioniert das Ganze auch.
Also werde ich es so lassen und auf Delphi vertrauen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 09:13 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz