Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Tregistry.DeleteKey und Zugriffsrechte (https://www.delphipraxis.net/72302-tregistry-deletekey-und-zugriffsrechte.html)

Luckie 28. Jun 2006 12:30


Tregistry.DeleteKey und Zugriffsrechte
 
Mir ist eben folgendes aufgefallen: Ich habe folgende Routine zum Löschen einen Registrykeys:
Delphi-Quellcode:
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;
Diese Routine funktioniert. Aber ändert man die Zugriffsrechte auf KEY_WRITE passiert folgendes:
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?

mirage228 28. Jun 2006 12:33

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

Luckie 28. Jun 2006 12:36

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