Abonnement à un événement d'arrêt est théoriquement possible. Vous pouvez vous abonner pour recevoir les mises à jour du journal des événements "Système". Vous recherchez un événement à partir de Source = "EventLog" et EventID = 6006. Cet événement contient le message:
Le service du journal des événements a été arrêté.
Il s'agit généralement du dernier message écrit à l'arrêt. Mais attendez! Il peut être problématique de recevoir ceci via WMI. Pourquoi? Il se peut que le service WMI lui-même s'arrête avant EventLog, il pourrait donc s'agir d'un Catch 22. Vous pourriez potentiellement rechercher un autre message qui se produit plus tôt pendant l'arrêt sur les serveurs que vous surveillez, et surveillez-le. Un événement de démarrage entraîne un ensemble encore plus gênant de Catch 22s. Pensez à la façon dont WMI Eventing fonctionne pour un moment. Pour obtenir des événements, vous devez ouvrir une connexion au serveur WMI distant via DCOM et émettre une requête WQL pour indiquer les événements souhaités. Pour recevoir un événement de démarrage, vous devez savoir "par magie" d'ouvrir la connexion et d'émettre la requête avant le déclenchement de l'événement.
Il y a quelques années, j'ai écrit un service qui collectait les entrées du journal des événements à partir de serveurs distants pour une application de surveillance réseau. Juste la logique de détecter quand la connexion DCOM à la télécommande avait été perdu et avait besoin d'être reconstruit était une douleur majeure dans le cou. Comme c'était le cas, il s'agissait d'un composant d'un système plus important qui envoyait une commande ping aux hôtes distants. Nous nous sommes donc reposés sur ces informations pour savoir quand reconstruire nos connexions DCOM.
Vous ne dites pas si c'est pour n'importe quelle machine sur le réseau, ou êtes-vous intéressé par un ensemble spécifique connu de machines? – Tim