![]() |
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! |
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. |
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. |
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. |
AW: TRegistry.DeleteKey - Löschen von Unterschlüsseln
O.k. Danke für den Hinweis.
Werde ich mir alos die (kleine) Mühe machen. |
AW: TRegistry.DeleteKey - Löschen von Unterschlüsseln
Delphi-Quellcode:
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.
function TRegistry.DeleteKey(const Key: string): Boolean;
|
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) |
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 20:05 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz