C# 检索进程描述信息
我正在尝试检索流程信息,我知道我可以使用:C# 检索进程描述信息,c#,.net,C#,.net,我正在尝试检索流程信息,我知道我可以使用: Process[] myProcesses = Process.GetProcesses(); 但是如何检索流程描述呢?它是通过一些Win32 API调用实现的吗?我正在运行Vista,当我在任务管理器中单击“进程”选项卡下的时,我看到了描述。这是我唯一可以看到的方法。我尝试了进程和Win32_进程,但没有成功 using System; using System.Collections.Generic; using System.Linq; usi
Process[] myProcesses = Process.GetProcesses();
但是如何检索流程描述呢?它是通过一些Win32 API调用实现的吗?我正在运行Vista,当我在任务管理器中单击“进程”选项卡下的时,我看到了描述。这是我唯一可以看到的方法。我尝试了进程和Win32_进程,但没有成功
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();
}
}
}
您在任务管理器中看到的实际上是可执行映像的描述字段 您可以使用
GetFileVersionInfo()
和VerQueryValue()
WinAPI调用来访问各种版本信息,例如CompanyName或FileDescription
对于.Net方式,使用FileVersionInfo
的FileDescription
成员,使用通过Process.MainModule.FileName
获取的可执行文件名进行实例化
另一种方法是通过
组装。从可执行映像加载程序集,然后查询AssemblyDescriptionAttribute
自定义属性。您只需进一步查看属性即可。
假设您有一个运行记事本的实例
Process[] proc = Process.GetProcessesByName("notepad");
Console.WriteLine("Process version- " + proc[0].MainModule.FileVersionInfo.FileVersion);
Console.WriteLine("Process description- " + proc[0].MainModule.FileVersionInfo.FileDescription);
好了