2012-04-17 10 views
0

他の外部アプリケーションを起動するためにC#プログラムを作成しようとしています。私は周りにグーグルでこれを見つけた:http://www.dotnetperls.com/process-start私はかなり良いチュートリアルだと思います。私が持っている唯一の問題は、プログラムのパスを常に知っているとは限らないことです。例えば正確なパスを知らずにC#で外部プログラムを起動する

、私はこれを行う場合:

ProcessStartInfo startInfo = new ProcessStartInfo(); 
startInfo.FileName = "firefox.exe"; 
Process.Start(startInfo); 

それが成功のFirefoxを起動します。しかし、私がこれを行う場合:

ProcessStartInfo startInfo = new ProcessStartInfo(); 
startInfo.FileName = "chrome.exe"; 
Process.Start(startInfo); 

クロムを見つけることができず、正確なパスから起動する必要があるため、失敗します。だから私の質問は、そこにインストールされているすべてのアプリケーションの普遍的なレジストリにアクセスしそこから起動する方法はありますか?ありがとう。

+0

1がありません。従来の意味では、すべてのプログラムが「インストール」されているわけではありません。私は、彼らがインストールされている場所を見つけるためにあなたが立ち上げる予定のプログラムを調べることをお勧めします。 – Venatu

+0

"chrome.exe"のファイルシステムを検索することができます。見つかったら、後で使用できるようにパスを保存します。 – Magnus

+0

@ Magnus:複数の「chrome.exe」がある場合は? –

答えて

2

アプリケーションは、フォルダパスが 'PATH'環境変数にあるときに直接起動できます。右の 'コンピュータ'

  • プロパティ]をクリックします

    1. この変数はで表示して編集することができます。

    2. アドバンス設定あなたは 'のWindows7' または 'Vistaの'
    3. アドバンスタブを使用している場合
    4. 環境変数

    エントリは;で分離されています。

    FirefoxがすでにPATHにフォルダを置いているので、あなたはFirefoxを起動できますか?

  • +2

    彼はパスを知っていれば(環境変数を追加するために)、おそらく彼のプログラムに追加するでしょう。 – Magnus

    +0

    しかし、問題はいくつかのプログラムまたはいくつかのインストールはPATHを登録していません。だから彼はハードディスク上でプログラムを思いつくのは難しいことを知る必要がある。 –

    +0

    私はVenatuとMagnusが正しいと思います。起動する汎用レジストリはありませんので、exeファイルを検索するだけです。私がそれを見つけたら、それは本当に正しいパスであることを確認するようにユーザーに促すだけです –

    0

    私はEnvironment.GetEnvironmentVariableメソッドを探していると思います。 はこのようにそれを使用することができます:

    Environment.GetEnvironmentVariable("PATH")

    、それはその変数に割り当てられた文字列を返します。

    プログラム通常、は、Windows OSの起動メカニズムによって自動的に検出できるように、その文字列の内部に署名します。

    この場合には、あなたが実行可能ファイルへのパス を知らないかもしれないということを意味

    が、は、起動するプログラムの名前を知っている必要があります。

    1

    これは古い質問ですが、私は解決策を見つけたと思います。各インストールされたプログラムのためのキーがあり

    \マイクロソフト\ Windowsの\ CurrentVersionの\アプリケーションのパス\

    HKEY_LOCAL_MACHINE \ソフトウェア:

    は、以下のレジストリキーを見てみましょう。たとえば、Chrome.exe。

    参考: http://msdn.microsoft.com/en-us/library/windows/desktop/ee872121(v=vs.85).aspx

    関連する問題