private static string GetProcessOwner( Process p ) { string s = "\\\\.\\root\\CIMV2:Win32_Process.Handle=\"" + p.Id + "\""; ManagementPath mp = new ManagementPath( s ); ROOT.CIMV2.Process wmip = new ROOT.CIMV2.Process( mp ); string domain,user; wmip.GetOwner( out domain , out user ); return domain + "\\" + user; }
private void ProcessWatcher_EventArrived(object sender, EventArrivedEventArgs e) { ROOT.CIMV2.Process wmiProcess = new ROOT.CIMV2.Process( (ManagementBaseObject)e.NewEvent["TargetInstance"] ); Process p = Process.GetProcessById( (int)wmiProcess.ProcessId ); string thisOwner = GetProcessOwner( Process.GetCurrentProcess() ); if ( thisOwner == GetProcessOwner( p ) ) { DoProcessAction( p ); } }