我正在尝试检索流程信息,我知道我可以使用:
Process[] myProcesses = Process.GetProcesses();
但如何检索流程说明?是通过一些Win32 API调用吗?我正在运行Vista,当我在任务管理器的“进程”选项卡下单击时,我会看到描述。
答案 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();
}
}
}