我怎么知道使用c#的另一个应用程序的版本

时间:2009-10-26 21:47:43

标签: c# process version

我需要在c#中编写一个程序来收集有关我计算机上运行的进程的信息。我成功地使用以下代码获取进程的名称和ID:

... Process [] processlist; ... foreach(处理进程列表中的进程)                 {                   Console.WriteLine(theprocess.ProcessName + ...)                 } ...

但我无法获得流程的版本(如Firefox或Visual Studio)。 有谁知道如何获得正在运行的进程的版本? 非常感谢!

3 个答案:

答案 0 :(得分:10)

theProcess.MainModule.FileVersionInfo。但是你需要抓住一两个例外。

答案 1 :(得分:2)

您可以从Process.StartInfo.FileName获取可执行文件的文件名。使用如下文件名获取FileVersionInfo的新实例:

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

然后访问myFileVersionInfo.FileVersion以获取文件版本。

编辑:丹尼尔的方式似乎更有效率;我不知道你可以直接访问加载模块的FileVersionInfo ..

答案 2 :(得分:2)

请记住,可执行文件的FileVersion和/或ProductVersion可能不一定与应用程序的版本相同。例如,Firefox 3.5.3报告的FileVersion为1.9.1.3523,但ProductVersion为3.5.3。另一方面,VMware Player 2.5.1报告的FileVersion为6.5.1.5078,ProductVersion为6.5.1 build-126130。 根据您使用的信息,这可能是也可能不是问题。