私は通常、ほとんどの wmi クエリを asnyc で実行していますが、通常は問題ありません。すべての特権と必要な dcom セキュリティ (リモート クエリ用) を使用して ManangementScope をセットアップします。コード全体の短いスニペットは次のようになります。
ManagementPath mp = new ManagementPath();
mp.NamespacePath = @"\root\cimv2";
mp.Server = computerName;
this.ms = new ManagementScope(mp, co); //privs + dcom [outside]
this.ms.Connect();
EventQuery eq = new EventQuery(query);
ManagementEventWatcher mew = new ManagementEventWatcher(this.ms, eq);
mew.EventArrived += new EventArrivedEventHandler(this.OnEventArrived);
mew.Stopped += new StoppedEventHandler(this.OnStopped);
mew.Start();
前述のように、これで問題が発生することはめったにありませんが、現在 :-( クエリされるクラスは 'Win32_LocalTime' であり、クエリは開始されますが、イベントは発生しません。WBemTest では、これは機能します。
これはクエリです:
select * from __InstanceModificationEvent where targetinstance isa 'Win32_LocalTime'
クラスがシングルトンであり、おそらく特別な構文を使用してクエリでシングルトン クラスを指定する必要があることがわかりますが、それを理解することはできません。
さらに、powershell で 1 つの非同期クエリを試してみましたが、うまくいきました。次に、PS を使用して「Win32_LocalTime」をクエリしましたが、動作しません!!
詳細情報へのヒント、ヒント、またはポインターは本当に素晴らしいでしょう!
これまでありがとう、そしてよろしく
++マブラ