我正在使用 WCF 服务库在 LAN 上开发一个小型远程任务管理器应用程序 [服务器/客户端]。
我需要知道哪种方式可以更快地获取处理器信息:
- 从中获取进程信息
System.Diagnostics
? - 从中获取进程信息
WMI
?
我现在使用第一个选项,但是如果应用程序是 x86,并且进程是 x64,那么我无法访问Process.MainModule
,所以它迫使我创建我的应用程序的两个版本以使其在任何 PC 上工作,x86 版本和 x64。
那么如果我使用 WMI,我会面临同样的问题吗?
public void GetProcesses()
{
foreach (Process p in Process.GetProcesses())
{
try
{
InfoProcess process = new InfoProcess(p.Id, p.MainModule.ModuleName, p.MainModule.FileVersionInfo.FileDescription, p.WorkingSet / 1024);
PrintProcess(process);
}
catch
{ }
}
}
public class InfoProcess
{
public int Id;
public string Name;
public string Description;
public int WorkingSet;
public InfoProcess(int Id, string Name, string Desc, int WorkingSet)
{
this.Id = Id;
this.Name = Name;
this.Description = Desc;
this.WorkingSet = WorkingSet;
}
}
如果 WMI 更好,我需要一些关于属性名称的帮助:
Process.WorkingSet
Process.MainModule.FileVersionInfo.FileDescription