2011-11-30 96 views
0

我想從進程名的完整路徑,而不運行process.In otherwords-其中C#得到,當它正在執行下列絕對路徑:路徑不運行

的Process.Start(StartInfo的);

startInfo不包含絕對路徑。

+1

所以你只想要'WHERE'命令的C#等價物? – Gabe

+0

例如:我知道進程名稱abc.exe。我想知道它的絕對路徑。但不想運行它。 – user743246

+0

您可以使用'Process.Start'來執行Windows的'WHERE'命令,並讀取輸出。 –

回答

2

可執行文件的完整路徑通過%PATH%環境變量解決。您可以按如下方式複製行爲:

var result = Environment.GetEnvironmentVariable("PATH") 
         .Split(';') 
         .Select(path => Path.Combine(path, "notepad.exe")) 
         .FirstOrDefault(path => File.Exists(path)); 

// result == "C:\\Windows\\system32\\notepad.exe" 
+2

您還必須檢查當前目錄。 –

0

使用標準Windows搜索策略:PATH環境變量中的當前文件夾和文件夾。

0

也許我誤解了,但怎麼樣:

var fInfo = new FileInfo(startInfo.FileName); 
var fullPath = fInfo.FullName; 

+0

我知道進程名稱abc.exe。我想知道它的絕對路徑。但不想運行它。 – user743246

+0

我編輯後看到了嗎? – y0uri