2011-11-08 84 views
3

在.NET中,是否存在與Windows Vista和Windows 7計算機上存在的「where」命令等效的命令?我需要解決安裝時在系統路徑中定義的可執行文件的硬路徑,而不是每個人都使用默認安裝路徑安裝所有文件。.NET等價命令提示符「where」命令

目前我稱之爲「where」命令作爲外部進程,但是這隻適用於Vista和Windows 7機器,這對於開箱即用的XP​​無效。

+1

簡答題:沒有。你是否從'Process.Start'這樣的東西調用了這個其他的可執行文件?或者你想把文件/東西放在文件夾中? – user7116

+0

我使用Process.Start()調用可執行文件。 –

+1

您可以使用System.Environment.GetEnvironmentVariable編寫函數來獲取路徑,然後自行搜索您要查找的可執行文件的路徑。 – Kibbee

回答

0

您必須讀取環境變量PATH,並在每個路徑中查找應用程序的存在並使用它。這是怎樣的PowerShell命令get-command作品,以及 - http://technet.microsoft.com/en-us/library/dd347726.aspx

注意:如果通過which/where獲取路徑的原因是使用的路徑和調用可執行程序,你不必這樣做,因爲執行已經在路徑,你需要得到的路徑,然後明確地使用它。

+0

好吧,這裏有趣的是:當我使用'where'時,它發現它,但如果我僅僅使用可執行文件名稱調用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)

它返回一個包含路徑(S)的字符串數組。

+0

「System.IO.Directory.Exists」將單個參數作爲輸入,它是目錄的路徑並返回true/false。你從哪裏得到Exists方法的定義? –