我需要在c#中编写一个程序来收集有关我计算机上运行的进程的信息。我成功地使用以下代码获取进程的名称和ID:
... Process [] processlist; ... foreach(处理进程列表中的进程) { Console.WriteLine(theprocess.ProcessName + ...) } ...
但我无法获得流程的版本(如Firefox或Visual Studio)。 有谁知道如何获得正在运行的进程的版本? 非常感谢!
答案 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。 根据您使用的信息,这可能是也可能不是问题。