2013-06-05 57 views
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; 

答えて

11

あなたがKeyExistsではなくValueExistsを呼び出す必要があります。キーはRegeditのフォルダとして表示されますが、キーHKCU\Software\...\Runにはnginx.exeという名前の値があります。

いくつかの他のコメント:

  1. あなただけではなくOpenKeyよりもOpenKeyReadOnlyを使用し、レジストリから読んでいるので。
  2. キーを開くことができない場合は、OpenKeyReadOnlyの戻り値を確認してください。
  3. 実際にHKLMでコメントを述べる必要がある場合は、64ビットシステムで32ビットプロセスを実行しているときに、レジストリのリダイレクトの混乱に注意してください。
+0

この高速回答ありがとうございます。今はその仕事。しかしそれは他の間違いのために働かなかった。私はHKEY_LOCAL_MACHINEではなく、現在のユーザーを使用して、自動スタート< – Hidden

関連する問題