I posted this question on an article just now but I don't know how many people would see it there:
Process Information and Notifications using WMI
So anyway. Many of the concepts I am using are explained in the article but here is my problem:
It just so happens that I have implemented almost identical code in a testing process monitor I have written. I use the code to keep an eye on any child (and [great]*grand kids) of a test process I have started. I do this because I need to know when the entire process completes and so I can kill any child processes if the test times out.
This code works fine 99.9% of the time but I am getting some rare errors specifically on Windows 7 computers and servers.
testing the code on my own windows 7 machine often gives me most common error which is "Exception from HRESULT: 0xFFFFFFFF" but LastWin32Error is 1008:
An attempt was made to reference a token that does not exist.
Here is the code that triggers the error:
const string queryString = "SELECT *" +
" FROM __InstanceOperationEvent " +
"WITHIN " + pol +
" WHERE TargetInstance ISA 'Win32_Process' ";
MachineName = ".";
const string scope = @"\\.\root\CIMV2";
_watcher = new ManagementEventWatcher(scope, queryString);
_watcher.EventArrived += WatcherOnEventArrived;
Is would appear that once this error occurs once then it is almost certain to happen the next several times I try, so try-catch-retry code doesn't help.
Any ideas what I can do to get by this or look into it further?