如何使用C#获取另一个应用程序的版本信息?

6

我需要用C#编写一个程序来收集计算机上运行的进程信息。使用以下代码,我已经成功获取了进程名称和ID:

... Process[] processlist; ... foreach (Process theprocess in processlist) { Console.WriteLine(theprocess.ProcessName + ...) } ...

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

3个回答

19

theProcess.MainModule.FileVersionInfo。但有一两个例外情况需要捕捉。


3

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

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

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

编辑:Daniel的方法似乎更有效;我不知道你可以直接访问加载的模块的FileVersionInfo。


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。
根据您使用信息的目的,这可能是一个问题,也可能不是。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接