レジストリから任意のプログラムのパスを取得したい


art  2006-10-11 04:57:16  No: 23538

procedure TForm1.Button1Click(Sender: TObject);
var Reg : TRegistry;
begin
  Reg := TRegistry.create;

     Reg.RootKey := HKEY_LOCAL_MACHINE;
     Reg.OpenKeyReadOnly('任意のプログラムパスが含まれている所までのパス');
     label1.Caption:= reg.ReadString('');
end;

これをコンパイルしてButton1を押すとlabel1のcaptionが空白に
なってしまうんですがどうすれば良いでしょうか。


igy  2006-10-11 05:40:26  No: 23539

OpenKeyReadOnlyの戻り値はTrueですか?


art  2006-10-11 05:46:00  No: 23540

Reg.OpenKeyReadOnly('任意パス',****(True));?
ReadOnlyにしているので****のところには何も入れてません


igy  2006-10-11 06:03:13  No: 23541

>>OpenKeyReadOnlyの戻り値はTrueですか?

>Reg.OpenKeyReadOnly('任意パス',****(True));?
>ReadOnlyにしているので****のところには何も入れてません

OpenKeyReadOnlyが返す値です。

  Reg := TRegistry.Create;
  try
    Reg.RootKey := HKEY_LOCAL_MACHINE;
    if Reg.OpenKeyReadOnly('任意のプログラムパスが含まれている所までのパス') then
    begin
      label1.Caption := Reg.ReadString('');
      Reg.CloseKey;
    end
    else
      label1.Caption := 'not Open';
  finally
    Reg.Free;
  end;


orz  2006-10-11 07:02:12  No: 23542

読み取るだけなら、これでクリエイトしては?
TRegistry.create(KEY_READ)

Create時の引数を省略すると、KEY_ALL_ACCESSでクリエイトされます。
アクセス権がないと、OpenKeyすら失敗した・・・気が。。。しないでもない。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加