2011-11-08 7 views
3

.NETには、Windows VistaおよびWindows 7マシンに存在する "where"コマンドと同等のものがありますか?インストール時にシステムパスに定義されている実行可能ファイルへのハードパスを解決する必要があります。誰もがデフォルトのインストールパスを使用してすべてをインストールするわけではありません。.NETコマンドプロンプトと同等のコマンド "どこで"コマンド

現在、私は外部プロセスとして "where"コマンドを呼び出していますが、VistaおよびWindows 7マシンでのみ動作します。これは、そのままの状態では動作しません。

+1

短い回答:いいえ。 'Process.Start'のようなものからこの他の実行ファイルを呼び出していますか?または、ファイル/フォルダをそのフォルダに入れることを考えていますか? – user7116

+0

私はProcess.Start()を使用して実行可能ファイルを呼び出しています。 –

+1

System.Environment.GetEnvironmentVariableを使用して関数を作成してパスを取得し、探している実行可能ファイルのパスを自分自身で検索できます。 – Kibbee

答えて

0

環境変数PATHを読んで、それぞれのパスにアプリケーションが存在するかどうか調べて、それを使用する必要があります。それは同様に動作get-commandどのようにPowerShellコマンドレットです - http://technet.microsoft.com/en-us/library/dd347726.aspx

注:which/whereてパスを取得するための理由は、パスを使用して実行可能ファイルを呼び出すことである場合に実行ファイルがすでにあるので、あなたはそれを行う必要はありませんパスを取得し、パスを明示的に使用する必要があります。

+0

これは面白いことです:「どこで」使用するかはわかりますが、単に実行可能な名前だけを使用してProcess.Start()を呼び出すだけでは見つかりません。これは、64ビットVistaとWindows 7に存在するように見えるだけの動作で、32ビットマシンは正常に動作しています。 –

+0

この32ビットコードは 'C:\ Program Files \ 'にインストールされていると誤って信じましたか? – user7116

+0

@BasedAsFunk - 私はそのような何かを観察しません。 64ビットWindows 7でうまく動作します。 – manojlds

-1

あなたは(System.IO.Directory.EnumerateFilesを使用することができます)ファイル を検索するための方法は、ここでそれはパス(複数可)を含む文字列の配列を返す例

 System.IO.Directory.EnumerateFiles(Environment.SystemDirectory,"YourFile.exe",SearchOption.AllDirectories)

です。

+0

"System.IO.Directory.Exists"は、ディレクトリのパスである入力として単一のパラメータをとり、true/falseを返します。 Existsメソッドの定義はどこから得られましたか? –

関連する問題