Einzelnen Beitrag anzeigen

Benutzerbild von Luckie
Luckie

Registriert seit: 29. Mai 2002
37.621 Beiträge
 
Delphi 2006 Professional
 
#1

Tregistry.DeleteKey und Zugriffsrechte

  Alt 28. Jun 2006, 12:30
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?
Michael
Ein Teil meines Codes würde euch verunsichern.
  Mit Zitat antworten Zitat