0
私のWPFアプリケーションでは、特定のプロパティを持つWindowsサービス(〜200)のリストを取得する必要があります。Wpf WMI Win32_Serviceクエリ
var result = new List<ServicesModel>();
ConnectionOptions connOptions = new ConnectionOptions
{
Impersonation = ImpersonationLevel.Impersonate,
EnablePrivileges = true,
};
ManagementScope manScope = new ManagementScope([email protected]"\\{System.Environment.MachineName}\ROOT\CIMV2",
connOptions);
manScope.Connect();
SelectQuery query = new SelectQuery("SELECT * FROM Win32_Service");
using (var searcher = new ManagementObjectSearcher(manScope, query))
foreach (var o in searcher.Get())
{
var obj = (ManagementObject) o;
ServicesModel service = new ServicesModel
{
Name = obj["DisplayName"] as string,
Path = obj["PathName"] as string,
Description = obj["Description"] as string,
Pid = Convert.ToInt32(obj["ProcessId"]),
Status = obj["State"] as string,
StartMode = obj["StartMode"] as string,
LogOnAs = obj["StartName"] as string
};
result.Add(service);
}
return result;
このメソッドを実行して、受け入れがたいデータを返すのに約1分かかります。 実行/戻り時間/パフォーマンスを改善するために何ができるのですか?私は、次のを思い付いたコメントに基づいて
おかげ
私はそのボックスを再起動する必要がある管理者のために申し訳ありません。 –
検索者が非常に遅いです。あなたはこの投稿を見ましたか? http://stackoverflow.com/questions/10502879/wmi-call-takes-to-much-time-when-system-starts-restarts – Tim
ありがとうTim、あなたのコメントが私を助けてくれました! –