WCF サービス ライブラリを使用して、LAN 上で小さなリモート タスク マネージャー アプリケーション [サーバー/クライアント] を開発しています。
プロセッサ情報を取得するには、どちらの方法が速いかを知る必要があります。
- からプロセス情報を取得します
System.Diagnostics
か? - からプロセス情報を取得します
WMI
か?
現在、最初のオプションを使用していますが、アプリケーションが x86 でプロセスが x64 の場合、にアクセスできませんProcess.MainModule
。そのため、アプリケーションの 2 つのバージョンを作成して、どの 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