Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Leeren Schlüssel in der Registry entfernen (https://www.delphipraxis.net/82582-leeren-schluessel-der-registry-entfernen.html)

xZise 15. Dez 2006 23:11


Leeren Schlüssel in der Registry entfernen
 
Ich erstelle einen neuen Schlüssel (mit meinen Programm):
Zitat:

*/shell/bla
und jetzt geht es darum, dass:
"shell" nicht von mir sein müsste!
"bal" entfernt werden kann...

Nun kann es sein (so wie es bei mir ist, dass nur "bla" in "shell" ist. Also könnte ich "shell" unbesorgt löschen lassen, wenn ich "bla" lösche.
Nun wollte ich fragen, wie ich das Prüfen/löschen kann...

Luckie 15. Dez 2006 23:33

Re: Leere Ordner in der Registry entfernen
 
Sollte der Ordner Shell nicht von deinem Programm erstellt worden sei, würde ich ihn auch nicht löschen.

Sunlight7 16. Dez 2006 00:15

Re: Leere Ordner in der Registry entfernen
 
Ähm, seit wann gibts in der Registry Ordner :gruebel:
Ich seh da immer nur Schlüssel :mrgreen:

Solange in "Shell" nix drin steht und es keine Unterschlüssel gibt, kann man den löschen.

Ob Shell leer ist kannste mit MSDN-Library durchsuchenRegEnumKey & MSDN-Library durchsuchenRegEnumValue überprüfen.

Grüßle!

Martin K 16. Dez 2006 00:46

Re: Leere Ordner in der Registry entfernen
 
Zitat:

Zitat von Sunlight7
Solange in "Shell" nix drin steht und es keine Unterschlüssel gibt, kann man den löschen.

Da wäre ich aber vorsichtig!
Beherzige lieber Luckies Rat:
Zitat:

Zitat von Luckie
Sollte der Ordner Shell nicht von deinem Programm erstellt worden sei, würde ich ihn auch nicht löschen.

Wenn Du nicht weißt woher der Schlüssel kommt, dann weißt Du auch nicht, was evtl. nicht funktioniert wenn er gelöscht ist.

Vielleicht hat ihn ein Programm erstellt und speichert da seine Einstellungen drin, bloß im Moment hat es eben (noch) nichts gespeichert.
Wenn es dann aber mal was da rein schreiben will und das Programm "zu blöd" ist diesen Schlüssel neu zu erzeugen, was dann?

Oder das Programm überprüft anhand des Vorhandenseins dieses Schlüssels irgendetwas, z.B. ob es installiert ist...

Also:
Wenn Du ihn nicht erstellt hast oder nicht weißt wer ihn erstellt hat, dann lösche ihn auch lieber nicht.

Meine Empfehlung!

xZise 16. Dez 2006 09:16

Re: Leere Ordner in der Registry entfernen
 
Also: Ich weiß nicht, ob ich ihn erstellt habe ;) Es kann sein, aber er könnte auch vorher vorhanden sein.
Aber mein Windows funktionierte auch bevor dieser Schlüssel (HKEY_CLASSES_ROOT\*\shell)

Deshalb hätte ich ihn ohne bedenken gelöscht. Nur könnte es sein, dass andere Programme da was abgelegt haben, und deshalb wollte ich gucken ob der leer ist.
Außerdem war es bei mir so, dass er den Schlüsssel automatisch miterstellt hatte...

Meflin 16. Dez 2006 09:28

Re: Leere Ordner in der Registry entfernen
 
Ich würde überhauptkeinen leeren "Ordner" einfach so löschen :stupid: schließlich kann man schon allein über das vorhanden- oder eben nicht-vorhanden-sein eines "Ordners" informationen abspeichern :!:


xZise 16. Dez 2006 09:44

Re: Leere Ordner in der Registry entfernen
 
Also!
Es handelt sich bei diesen Ordner um die Erweiterung des Kontextmenüs!

Und da Standardmäßig es diesen Ordner nicht gibt, und auch davor Windows lief, und niemand was über das vorhandensein speichern würde, denke ich, dass das Löschen zu keinen Problemen Führen sollte!

jakobwenzel 16. Dez 2006 09:55

Re: Leere Ordner in der Registry entfernen
 
Mach ne Sicherungskopie und probiers aus!

Sunlight7 16. Dez 2006 14:07

Re: Leere Ordner in der Registry entfernen
 
Hallo?

Ne Sicherungskopie von nem leeren Registrierungschlüssel?

Bei mir gibts den Schlüssel "HKEY_CLASSES_ROOT\*\Shell" gar net :wink:

PS: Hört auf von Ordnern zu reden, das verwirrt einige, wie man grad gesehen hat.

xZise 16. Dez 2006 14:23

Re: Leere Ordner in der Registry entfernen
 
Genau Snlight!

Inzwischen habe ich es so gelöst, dass ich mit "TRegistry.HasSubKeys" überprüfe, ob da noch was anderes drinne ist! Und notfalls klickt man auf nein, wenn man gefragt wird!

Sunlight7 16. Dez 2006 14:31

Re: Leere Ordner in der Registry entfernen
 
Snlight? :gruebel:

Okay, das hätt' ich Dir mit TRegistry.HasSubKeys auch sagen können, aber ich dacht, Du wollst' das Non-VCL machen :gruebel:
Weils da so den einen oder anderen Thread Gestern von Dir gab :-D

Grüßle!

Nils_13 16. Dez 2006 14:32

Re: Leere Ordner in der Registry entfernen
 
Luckies Rat sollte man trotzdem folgen, da manche Programme ab und zu nur etwas in die Registry schreiben, weil es sonst nicht gebraucht wird. Ist der Schlüssel weg und es soll etwas in diesen geschrieben werden, gibt es eine AV. Wenn man die Registry "säubert", ist das genauso bescheuert den Ordner "Anwendungsdaten" aufzuräumen.

xZise 16. Dez 2006 14:43

Re: Leere Ordner in der Registry entfernen
 
@ Sunlight: sry :P Wegen nonVCL: Ich glaube, dass ich tatsächlich da was falsch habe... Ich werde das mal korregieren. Ich habe es nämlich so gemacht gehabt, wie in inen ganz normalen Programm über VCL (das schreiben/lesen in/aus der Registry) :P (Nicht schimpfen ^^)

@ Nils: Nochmal!!! (Ich glaube ich rede gegen eine Wand :wall: )
Dieser Schlüssel wird NIE gebraucht, wenn KEINE Unterschlüssel in diesen sind.
KEIN Programm wird DARÜBER etwas abspeichern, außer es ist ziemlich crazy.
Warum bin ich mir so sicher:
1. Es handelt sich um einen Schlüssel für Windows.
2. In diesem Schlüssel werden Schlüssel gespeichert, in denen steht, was im Kontextmenü einer Datei erscheinen soll.
3. Funktioniert Windows auch ohne diesen Schlüssel.

Ich hoffe mal, dass ihr endlich mal einseht dass sich hierbei um eine ganz problemlose Löschung handelt.

Sunlight7 16. Dez 2006 14:49

Re: Leere Ordner in der Registry entfernen
 
Zitat:

Zitat von Nils_13
Ist der Ordner weg und es soll etwas in diesen geschrieben werden, gibt es eine AV.

Redest Du jetzt von nem Ordner auf der Platte, oder von nem Schlüssel in der der Registry?

@xZise: Okay, um es Non-VCL zu machen, siehe die beiden Funktionen oben.
Zumindest Du siehst es ein, das es ein Schlüssel ist :-D
Ändere bitte den Titel des Threads, damit hier nicht noch weiter Verwirrung entsteht. :wink:

Grüßle!

Edit: Bei anderen Schlüsseln würd' ich Luckies Empfehlung auch empfehlen, jedoch muß ein Programm, welches sich in das Shell Kontextmenü Einträgt immer prüfen, ob der Schlüssel vorhanden ist, da dieser auch von De-Installationsprogrammen entfernt werden kann.

Ich hoffe, damit ist jetzt alles geklärt, man kann man die Diskussion beenden und zur eigentlichen Frage zurückkehren.

Christian Seehase 16. Dez 2006 18:00

Re: Leeren Schlüssel in der Registry entfernen
 
Moin Sunlight,

RegEnumKey und RegEnumValue benötigt man hier gar nicht, es reicht MSDN-Library durchsuchenRegQueryInfoKey (die man vor den Enum-Funktionen eh' benutzen sollte, um den Buffer gezielt dimensionieren zu können. ;-))

Sunlight7 16. Dez 2006 18:08

Re: Leeren Schlüssel in der Registry entfernen
 
Moin Christian!

Okay, hast mich überzeugt :-D
Hmm, dann hätt' ich das bislang net so umständlich machen brauchen :stupid: :mrgreen:

Grüßle!

xZise 16. Dez 2006 20:04

Re: Leeren Schlüssel in der Registry entfernen
 
Abgesehen davon, dass die nonVCL-Variante der Registry, ziemlich unübersichtilich ist ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 04:50 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