Ganz wichtig: Man prüft einen Boolean nicht mit = TRUE oder = FALSE. Das ist nicht nur unlogisch sondern kann auch Fehler (insbesondere in Verbindung mit
API-Funktionen) verursachen.
Delphi-Quellcode:
if Reg.KeyExists then //richtig
//true
if not Reg.KeyExists then //richtig
//false
if Reg.KeyExists = TRUE then //falsch
if Reg.KeyExists = FALSE then //falsch
Zu deinen Code: Du verwechselst den Schlüssel (Key, z. B. \SOFTWARE\Irgendwas\) mit dem Namen eines Wertes (KeyName).
Delphi-Quellcode:
Result := False;
Reg := TRegistry.Create(KEY_READ); //Reg Nur-Lesen öffnen, dann brauchen wir auch keine Adminrechte
try
Reg.RootKey := HKEY_LOCAL_MACHINE;
if Reg.OpenKey('\SOFTWARE\Microsoft\Windows\CurrentVersion\Run\', False) then
begin
Result := Reg.ValueExists('KeyName');
end;
finally
Reg.Free;
end;