6

どこが間違っているのかわかりません。いつもブランチに飛びelseますが、キーが存在するので、何度か確認しました。

var
  reg : TRegistry;
begin
    with TRegistry.Create do try
      RootKey:=HKEY_CURRENT_USER;
      OpenKey('\Software\Microsoft\Windows\CurrentVersion\Run', False);
    if KeyExists('nginx.exe') then begin
      ShowMessage('Ja geht ist da');
      Result := True;
      btnAutostart.ImageIndex := 5
    end
    else begin
      Result := False;
      btnAutostart.ImageIndex := 0;
    end;
    finally
      Free;
    end;
end;
4

1 に答える 1

13

ValueExistsではなく呼び出す必要がありますKeyExistsnginx.exeキーは、Regedit でフォルダーとして表示されるものですが、キーで名前が付けられた値を探していますHKCU\Software\...\Run

その他のコメント:

  1. レジストリから読み取るだけなのでOpenKeyReadOnlyOpenKey.
  2. OpenKeyReadOnlyキーが開けない場合の戻り値を確認してください。
  3. 実際にHKLMでこれを行う必要がある場合(コメントで述べているように)、64ビットシステムで32ビットプロセスを実行するときのレジストリリダイレクトの混乱に注意してください。
于 2013-06-05T11:11:41.853 に答える