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?