2009-10-26 60 views
2

我需要在c#中編寫一個程序來收集有關我的計算機上運行的進程的信息。我成功使用此代碼獲取進程的名稱和ID:我怎麼能知道另一個應用程序的版本使用c#

... Process [] processlist; ... 的foreach(theprocess在PROCESSLIST過程) { Console.WriteLine(theprocess.ProcessName + ...) } ...

,但我無法得到處理的版本(如Firefox或Visual Studio)。 是否有人知道如何獲取正在運行的進程的版本? 非常感謝!

回答

10

theProcess.MainModule.FileVersionInfo。但有一個或兩個例外,你需要捕捉。

1

您可以從Process.StartInfo.FileName獲取可執行文件的文件名。使用文件名像這樣獲得的FileVersionInfo一個新實例:

FileVersionInfo myFileVersionInfo = FileVersionInfo.GetVersionInfo(Process.StartInfo.FileName); 

然後訪問myFileVersionInfo.FileVersion來獲取文件的版本。

編輯:丹尼爾的方式似乎更有效;我不知道你可以直接訪問加載的模塊的FileVersionInfo ..

2

請記住,可執行文件的FileVersion和/或ProductVersion可能不一定與應用程序的版本相同。例如,Firefox 3.5.3報告FileVersion爲1.9.1.3523,但是ProductVersion爲3.5.3。另一方面,VMware Player 2.5.1報告6.5.1.5078的FileVersion和6.5.1 build-126130的ProductVersion。 根據您使用的信息,這可能會也可能不是問題。

相關問題