读取系统进程,用Process和WMI哪个好?
需求:web页面读取系统进程信息,可以结束进程
实现:
方法一:一个方法是用Process.GetProcesses();结合linq查询进程的一些信息
var modelList = Process.GetProcesses();
rptItems.DataSource = from c in modelList
orderby c.PrivateMemorySize64 descending
where c.Id!=curren.Id
select new {
c.Id,
c.ProcessName,
c.Threads.Count,
FileName=c.MainModule.FileName,//用它就报错
PrivateMemorySize64 = (c.PrivateMemorySize64) / 1024
};
rptItems.DataBind();
ManagementObjectSearcher QS = new ManagementObjectSearcher(new SelectQuery("Win32_Process"));
PrivateMemorySize64 = (c.PrivateMemorySize64) / 1024
};});
rptItems.DataBind();};
[解决办法]
WMI的方法要好一点。WMI是微软帮你封装了一套查询监控的服务,比直接调用地层API更安全,性能能更稳定。