检索过程描述信息
我正在尝试检索进程信息,我知道我可以使用:
Process[] myProcesses = Process.GetProcesses();
但是如何检索流程描述? 是通过一些Win32 API调用吗? 我正在运行Vista,当我在任务管理器中的进程选项卡下单击时,我看到了描述。
您在任务管理器中看到的实际上是可执行映像的“描述”字段。
您可以使用GetFileVersionInfo()
和VerQueryValue()
WinAPI调用来访问各种版本信息,例如CompanyName或FileDescription。
对于.Net方式,使用FileVersionInfo
的FileDescription
成员,使用通过Process.MainModule.FileName
的可执行文件名实例化。
另一种方式是通过Assembly
。 从可执行映像加载程序集,然后查询AssemblyDescriptionAttribute
自定义属性。
你只需要进一步了解属性。 假设您有一个记事本运行实例。
Process[] proc = Process.GetProcessesByName("notepad"); Console.WriteLine("Process version- " + proc[0].MainModule.FileVersionInfo.FileVersion); Console.WriteLine("Process description- " + proc[0].MainModule.FileVersionInfo.FileDescription);
你去!
这是我能看到的唯一方法。 我试过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(); } } }
- C#客户端如何调用wsdl文件
- 接线员’??’ 不能应用于’string’和’System.DBNull’类型的操作数
- 在调用`Invoke`时避免`ObjectDisposedException`
- ASP.NET加密 – aspnet_regiis – Farm
- Xamarin.Forms Google API使用身份提供程序对用户进行身份validation
- 在c:\ ProgramFiles \下忽略.Net app.config文件
- 如何在ac#win表单应用程序中捕获键盘敲击(CTRl + alt + Del)
- 学习C#/ .NET是否需要MSDN订阅?
- 抛出未处理的枚举值的正确exception是什么?