特定のプロセスが開始または停止されるシナリオを処理するコードがあり、これを実現するために ManagementEventWatcher を使用しています。
string queryStart = "SELECT * FROM Win32_ProcessStartTrace" +
" WHERE ProcessName LIKE '...'"; // WHERE clause includes all the processnames that I want to monitor
ManagementEventWatcher startWatch = new ManagementEventWatcher(
new WqlEventQuery(queryStart));
startWatch.EventArrived += new EventArrivedEventHandler(ProcessNewInstanceWhenCreated);
startWatch.Start();
このコードは私のマシンでローカルに正常に動作しますが、サーバーの 1 つに展開すると、「アクセスが拒否されました」という例外がスローされます。サーバーでこれを実行しているユーザーには管理者権限がないため、このリンクで説明されているようにユーザーを追加しました - http://world.episerver.com/faq/Items/SystemManagementManagementException-Access-denied/
これは問題を解決していないようです。これをサーバー上で機能させるには、他に何かアクションを実行する必要がありますか?
ManagementScope を ManagementEventHandler にも追加しましたが、それでも原因は解決しません。
string scopeString = "\\\\" + System.Environment.MachineName + "\\root\\CIMV2";
ManagementScope theScope = new ManagementScope(scopeString);
ManagementEventWatcher startWatch = new ManagementEventWatcher(theScope,
new WqlEventQuery(queryStart));
お時間をいただきありがとうございます。