检索过程描述信息

时间:2009-07-28 05:18:14

标签: c# .net

我正在尝试检索流程信息,我知道我可以使用:

Process[] myProcesses = Process.GetProcesses();

但如何检索流程说明?是通过一些Win32 API调用吗?我正在运行Vista,当我在任务管理器的“进程”选项卡下单击时,我会看到描述。

3 个答案:

答案 0 :(得分:11)

您在任务管理器中看到的实际上是可执行映像的“描述”字段。

您可以使用GetFileVersionInfo()VerQueryValue() WinAPI调用来访问各种版本信息,例如: CompanyName或FileDescription。

对于.Net方式,请使用FileDescription的{​​{1}}成员,并使用FileVersionInfo获取的可执行文件名实例化。

另一种方式是通过Process.MainModule.FileName。从可执行映像加载程序集,然后查询Assembly自定义属性。

答案 1 :(得分:10)

你只需要进一步了解这些属性。 假设您有一个记事本运行实例。

Process[] proc = Process.GetProcessesByName("notepad");
Console.WriteLine("Process version- " + proc[0].MainModule.FileVersionInfo.FileVersion);
Console.WriteLine("Process description- " + proc[0].MainModule.FileVersionInfo.FileDescription);

你去吧!

答案 2 :(得分:1)

这是我能看到的唯一方法。我尝试过Process和Win32_Process,但没有去。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Management;
using System.Diagnostics;

namespace Management
{
    class Program
    {
        static void Main(string[] args)
        {
            var ps = Process.GetProcesses();

            foreach (var p in ps)
            {
                try
                {
                    var desc = FileVersionInfo.GetVersionInfo(p.MainModule.FileName);
                    Console.WriteLine(desc.FileDescription);
                }
                catch
                {
                    Console.WriteLine("Access Denied");
                }
            }

            Console.ReadLine();
        }
    }
}