Kann es sein, dass die ganzen Ratschläge von oben wieder über Bord geworfen wurden? Ich versuch es mal aus der hohlen Hand:
Delphi-Quellcode:
function RegCheck():Boolean;
begin
result:= false;
reg:= TRegistry.Create(KEY_READ); //nur zum Lesen öffnen <-- fehlte
try
reg.RootKey:= HKEY_Local_Machine;
if reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\',false) then
try
if reg.ValueExists('KeyName') then
begin
Name:= ('HKEY_Local_Machine\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\KeyName');
result:= True;
x:= 1;
end;
finally
Reg.CloseKey; //das hab ich in den oberen Codes komplett vermisst
end;
reg.RootKey:= HKEY_Current_User;
if reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\', False) then
try
if reg.ValueExists('KeyName') then
begin
Name:= ('HKEY_Current_User\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\KeyName');
result:= True;
x:= 2;
end;
finally
Reg.CloseKey; //s.o.
end;
finally
reg.Free;
end;
end;
Außerdem würde ich nicht auf globale Variablen zugreifen wollen, sondern x und Name eher als var-Parameter übergeben.