Einzelnen Beitrag anzeigen

Andreas L.
(Gast)

n/a Beiträge
 
#4

Re: Prüfen, ob RegistryKey vorhanden ist?

  Alt 1. Mai 2010, 11:07
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;
  Mit Zitat antworten Zitat