Подписка на событие отключения теоретически возможна. Вы можете подписаться на получение обновлений в системном журнале событий. Вы будете искать событие из Source = "EventLog" и EventID = 6006. Это событие содержит сообщение:
Служба журнала событий остановлена.
Обычно это последнее сообщение, написанное при завершении работы. Но ждать! Может быть проблематично получить это через WMI. Зачем? Возможно, сама служба WMI завершает работу до EventLog, так что это может быть Catch 22. Возможно, вы могли бы искать другое сообщение, которое появляется раньше, во время выключения на серверах, которые вы отслеживаете, и наблюдать за этим.
Событие загрузки включает в себя еще более хлопотный набор Catch 22s. Подумайте, как работает событие WMI. Чтобы получить события, вы должны открыть соединение с удаленным сервером WMI через DCOM и выполнить запрос WQL, чтобы указать, какие события вы хотите. Чтобы получить событие загрузки, вы должны «волшебным образом» знать, чтобы открыть указанное соединение и выполнить указанный запрос до того, как событие будет запущено.
Несколько лет назад я написал сервис, который собирал записи журнала событий с удаленных серверов для приложения мониторинга сети. Просто логика, чтобы определить, когда соединение DCOM с пультом было потеряно и должно было быть восстановлено, было главной болью в шее. Как оказалось, это был компонент в более крупной системе, который в любом случае проверял связь с удаленными хостами, поэтому мы в конечном итоге полагались на эту информацию, чтобы знать, когда нужно перестраивать наши подключения DCOM.