![]() |
Registry Key löschen
Folgendes habe ich geschrieben:
Delphi-Quellcode:
Normalerweise sollte dadurch die Objektliste (die ganzen Tray's) gelöscht werden..
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; Also die History davon, nicht direkt die neben der Uhr. Wieso klappt das mit dem löschen nicht? |
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. |
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 ? |
Re: Registry Key löschen
Zitat:
|
Re: Registry Key löschen
was bezweckst du denn mit diesem vorhaben und welche windows eigene funktion meinst du?
|
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.
|
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.
|
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.
|
Re: Registry Key löschen
Aber wenn er DeleteKey() aufruft, dann ist KEY_ALL_ACCESS schon richtig, da er ja nicht nur lesen will?
|
Re: Registry Key löschen
Zitat:
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 01: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