//取得 ObjectQuery query = new ObjectQuery("Select Logfile,SourceName,EventCode from Win32_NTLogEvent Where (EventType = 1 or EventType = 2) and (TimeGenerated > '2009/01/23 17:50:12') and (( Message like '%パッケージ%' ) or ( Message like '%ドライバ%' ))");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query); ManagementObjectCollection queryCollection = searcher.Get(); foreach (ManagementObject mo in queryCollection) { Console.WriteLine("ログ名:" + mo["Logfile"]); Console.WriteLine("エラーの題名:" + mo["SourceName"]); Console.WriteLine("エラーのID:" + mo["EventCode"]); }
分類:[.NET]
お世話になっております。
C#でWQLを用いて、クライアントの情報を取得しています。
以下のように実装したのですが、クエリが長いものになるとManagementObjectSearcher.Get() の時点で関数の評価がタイムアウトしてしまいます。
Where句以降を個々に指定した場合はうまくいくのですが。。。
※なお、TimeGeneratedに現在時間に近い(例えば5分前など)値を設定した場合も同じエラーになります。
どうかアドバイスをお願いいたします。
//取得
ObjectQuery query = new ObjectQuery("Select Logfile,SourceName,EventCode from Win32_NTLogEvent Where (EventType = 1 or EventType = 2) and (TimeGenerated > '2009/01/23 17:50:12') and (( Message like '%パッケージ%' ) or ( Message like '%ドライバ%' ))");
ManagementObjectSearcher searcher = new ManagementObjectSearcher(query);
ManagementObjectCollection queryCollection = searcher.Get();
foreach (ManagementObject mo in queryCollection)
{
Console.WriteLine("ログ名:" + mo["Logfile"]);
Console.WriteLine("エラーの題名:" + mo["SourceName"]);
Console.WriteLine("エラーのID:" + mo["EventCode"]);
}