Alsoooooo:
Ich speichere die Einstellungen von meinen Programm
en in ein einem Unterschlüssel von: '
HKCU\Software\MichaelPuff'. In dem Programmen baue ich eine Routine ein, die die Programmeinstellunegn wieder löschen soll. Kein Problem so weit. Jetzt kann es aber vorkommen, dass mehrere von meinen Programmen ihre Einstellungen dort speichern. Das sähe dann so aus:
Code:
HKCU\Software\MichaelPuff
Programm1
Programm2
Löscht jetzt das letzte Programm seine Einstellungen aus meinem Schlüssel, soll es auch den leeren Schlüssel 'MichaelPuff' löschen. Und das klappt irgendwie nicht. Ich bekomme an der betreffenden Stelle im Code immer 'Zugriff verweigert' zurück.
Hier mein Code:
Delphi-Quellcode:
function DelRegSettings(const CompanyKey, SubKey: String): Boolean;
var
reg: TRegistry;
bRes: Boolean;
sl: TStringList;
begin
reg := TRegistry.Create;
try
reg.RootKey := HKEY_CURRENT_USER;
bRes := reg.KeyExists(CompanyKey);
if bRes then
begin
bRes := reg.OpenKey(CompanyKey, False);
if bRes then
begin
sl := TStringList.Create;
try
reg.GetKeyNames(sl);
if sl.IndexOf(SubKey) <> -1 then
begin
bRes := reg.DeleteKey(SubKey);
end;
finally
FreeAndNil(sl);
end;
reg.CloseKey;
end;
bRes := Reg.OpenKey(CompanyKey, False);
if bRes then
begin
sl := TStringList.Create;
reg.GetKeyNames(sl);
//#TODO1: Hier stimmt noch was nicht!!!
if sl.Count = 0 then
begin
bRes := reg.DeleteKey('MichaelPuff'); // <- 'Zugriff verweigert!!!
// Test
ShowMessage(SysErrorMessage(GetLasterror));
end;
reg.CloseKey;
end;
end;
finally
FreeAndNil(reg);
end;
result := bRes;
end;
Was mache ich falsch? Ich bekomme es einfach nicht hin.