Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Registry Key löschen (https://www.delphipraxis.net/97921-registry-key-loeschen.html)

Tommy1988 18. Aug 2007 21:29


Registry Key löschen
 
Folgendes habe ich geschrieben:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
registry : TRegistry;
begin
registry := TRegistry.Create;
 try
   registry.RootKey := HKEY_CURRENT_USER;
    if registry.OpenKey('\Software\Microsoft\Windows\'
      +'CurrentVersion\Explorer\TrayNotify', True) then
      begin
        registry.DeleteKey('IconStreams');
        registry.DeleteKey('PastIcon-Streams');
        registry.CloseKey;
      end else
        begin
         ShowMessage('Fehler, Schlüssel existieren nicht');
        end;
   finally
     registry.Free;
   end;
end;
Normalerweise sollte dadurch die Objektliste (die ganzen Tray's) gelöscht werden..
Also die History davon, nicht direkt die neben der Uhr.

Wieso klappt das mit dem löschen nicht?

Matze 18. Aug 2007 21:32

Re: Registry Key löschen
 
Hi,

der Parameter von OpenKey() darf am Anfang keinen Backslash haben, soweit ich weiß. Entferne diesen daher mal.
Geht das dann immer noch nicht, schau mal, was SysErrorMessage(GetLastError) zurückliefert.

Tommy1988 18. Aug 2007 21:36

Re: Registry Key löschen
 
Erm. also das ist sehr komisch. Backslash weg, geht noch immer net.

Fehlermeldung von SysErrorMessage(GetLastError):

"Zugriff verweigert"

Ich glaube es ist so, dass ich geöffnete Keys nicht löschen kann.

Aber wie funktioniert es denn dann mit der Windows eigenen Funktion ?

Luckie 18. Aug 2007 21:48

Re: Registry Key löschen
 
Zitat:

Zitat von Tommy1988
Ich glaube es ist so, dass ich geöffnete Keys nicht löschen kann.

Aber wie funktioniert es denn dann mit der Windows eigenen Funktion ?

In dem Windows ihn vorher nicht öffnet?

semo 18. Aug 2007 22:23

Re: Registry Key löschen
 
was bezweckst du denn mit diesem vorhaben und welche windows eigene funktion meinst du?

Rakshasa 18. Aug 2007 23:01

Re: Registry Key löschen
 
Also das mit dem Backslash ist richtig so, hast Du mal mit KeyExists() geschaut, ob er die Schlüssel überhaupt findet? Ansonsten würde ich auf ein Berechtigungs-Problem tippen. Müsstest mal posten, welche Windows-Version Du hast, ob der USer Admin ist usw.

Luckie 18. Aug 2007 23:07

Re: Registry Key löschen
 
In dem Schlüssel hat man eigentlich auch als beschränkter Benutzer Lese- und Schreibrechte. Man sollte ihn also auch löschen können.

Olli 18. Aug 2007 23:25

Re: Registry Key löschen
 
TRegistry is berühmt für das Problem (habe BDS 2006 im Moment nicht mehr hier, daher kann ich leider nichtmal sagen ob es da behoben worden war), daß es KEY_ALL_ACCESS anfordert. Dumme Sache das. Wenn ich nur lesen will, sollte ich auch nur genau diesen Zugriff anfordern. Ich vermute mal ganz frech, daß das das Problem ist.

Rakshasa 18. Aug 2007 23:39

Re: Registry Key löschen
 
Aber wenn er DeleteKey() aufruft, dann ist KEY_ALL_ACCESS schon richtig, da er ja nicht nur lesen will?

Olli 18. Aug 2007 23:56

Re: Registry Key löschen
 
Zitat:

The valid access rights for registry keys include the DELETE, READ_CONTROL, WRITE_DAC, and WRITE_OWNER standard access rights. Registry keys do not support the SYNCHRONIZE standard access right.
Wenn dann immernoch Fehler 5 kommt, wird das schon seine Gründe haben (die man im Übrigen mit REGEDT32 - auf Windows 2000 - und REGEDIT - Nachfolgeversionen - auch händisch überprüfen kann, falls der Schlüssel mal seine Berechtigungen nicht einfach nur vererbt bekommen sollte - wie es meist der Fall ist).

Und ja, mit KEY_ALL_ACCESS hat man selbstverfreilich auch DELETE-Zugriff, aber umgekehrt ist eben nicht der Fall. Und der Zugriff wird aufgrund des insgesamt angeforderten Zugriffs erlaubt oder verweigert. Also alles im grünen Bereich ;)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:42 Uhr.
Seite 1 von 2  1 2      

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