System.Management.ManagementEventWatcher - Recovery after a trip

I am trying to create an application that can control several remote machines through WMI. As a C # developer, I decided to use the System.Management namespace.

For performance and scalability reasons, I'd rather use an event-based information-gathering method than a survey. So I studied the ManagementEventWatcher class.

For simple monitoring tasks, this class seems to be exactly what I want. I create an object, give it the ManagementScope, EventQuery, and EventWatcherOptions parameters, subscribe to the EventArrived event, and call the Start method (a simplified example below).

  using SM = System.Management;

  ...

  SM.ManagementEventWatcher    _watcher;
  SM.ConnectionOptions         conxOptions;
  SM.ManagementScope           scope;
  SM.WqlEventQuery             eventQuery;
  SM.EventWatcherOptions       eventOptions;
  SM.EventArrivedEventHandler  handler;

  string  path = @"\\machine\root\cimv2";

  conxOptions = new SM.ConnectionOptions ();
  conxOptions.Username = user;
  conxOptions.Password = password;
  scope = new SM.ManagementScope (path, conxOptions);
  scope.Connect ();

  eventQuery = new SM.WqlEventQuery ("SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE TargetInstance ISA 'Win32_Process'");

  eventOptions = new SM.EventWatcherOptions ();
  eventOptions.Context.Add ("QueryName", "Process Query");

  _watcher = new SM.ManagementEventWatcher (scope, eventQuery, eventOptions);
  handler = new SM.EventArrivedEventHandler (HandleWMIEvent);
  _watcher.EventArrived += handler;
  _watcher.Start ();

  Console.WriteLine ("Press Any Key To Continue");
  Console.ReadKey ();

  _watcher.Stop ();
  _watcher.EventArrived -= handler;

, , , , ( , , ..).

ManagementEventWatcher , , Stopped , . ManagementScope, ManagementEventWatcher, - IsConnected true, .

- , ?

, , - ManagementScope WMI , , - > , - > . , WMI, ( , ), , .

+3
4

WMI - . , , , , - . MSDN

- COM-, WMI . WMI. , WMI, WMI. , , WMI . WMI , WMI, , WMI. . " ".

MSDN , http://msdn.microsoft.com/en-us/library/aa393014(VS.85).aspx.

, . - (, ), .

+2

. , , #. WMI, .

+1

NetworkAvailabilityChange, NetworkAvailabilityEventArgs.IsAvailable. NetworkAddressChange , , .. ., System.Net.NetworkInformation ., , - , WMI, .

+1

, - , ManagementException, wbemErrCallCancelled WMI (0x80041032).

0

Source: https://habr.com/ru/post/1713192/


All Articles