![]() |
Tregistry.DeleteKey und Zugriffsrechte
Mir ist eben folgendes aufgefallen: Ich habe folgende Routine zum Löschen einen Registrykeys:
Delphi-Quellcode:
Diese Routine funktioniert. Aber ändert man die Zugriffsrechte auf KEY_WRITE passiert folgendes:
procedure TfrmMain.RegDelKey(const Key, SubKey: string);
var reg : TRegistry; begin reg := TRegistry.Create(KEY_ALL_ACCESS); try reg.RootKey := FOSSROOT_LM; if reg.OpenKey(Key, False) then reg.DeleteKey(SubKey); finally FreeAndNil(reg); end; end; DeleteKey liefert True und GetlastError "Vorgang erfolgreich beendet", der Schlüssel wurde aber nicht gelöscht. Das heißt, DeleteKey liefert True, obwohl das Löschen offensichtlich fehlgeschlagen ist. Sollte DeleteKey nicht False zurückliefern und GetLastError "Zugriff verweigert" bzw. sollte nicht eine Exception ausgelöst werden? Bin ich hier auf einen Bug in der VCL gestossen oder läßt sich das Verhalten logisch erklären und nachvollziehen? |
Re: Tregistry.DeleteKey und Zugriffsrechte
Hi,
Also TRegistry.DeleteKey gibt eigentlich nur dann True zurück, falls die Windows-Funktion ERROR_SUCCESS zurückliefert... mfG mirage228 |
Re: Tregistry.DeleteKey und Zugriffsrechte
Und warum gibt die API-Funktion ERROR_SUCCES zurück, wenn das Löschen doch offensichtlich fehlgeschlagen ist?
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:16 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 by Thomas Breitkreuz