机器上线时的WMI事件

时间:2008-11-14 18:09:02

标签: .net wmi

当远程计算机启动并联机或脱机时,是否有可以订阅的WMI事件?

我的应用程序需要能够监视计算机的可用性,理想情况下,我希望能够通过事件而不是连续轮询来运行。

4 个答案:

答案 0 :(得分:1)

理论上可以订阅关闭事件。您可以订阅获取“系统”事件日志的更新。您将从Source =“EventLog”和EventID = 6006中查找事件。此事件包含以下消息:

  

事件日志服务已停止。

这通常是关机时写入的最后一条消息。可是等等!通过WMI接收此信息可能会有问题。为什么?可能是因为WMI服务本身在EventLog之前关闭,所以它可能是一个Catch 22.您可能会在正在监视的服务器上关闭关闭期间发现的另一条消息,并注意这一点。

启动事件带来了一套更麻烦的Catch 22s。想想WMI事件如何发挥作用。要获取事件,您必须通过DCOM打开与远程WMI服务器的连接,并发出WQL查询以指示您想要的事件。为了接收启动事件,您必须“神奇地”知道打开所述连接并在事件被触发之前发出所述查询。

多年前,我写了一个服务,从远程服务器收集事件日志条目,用于网络监控应用程序。只是检测DCOM与遥控器的连接何时丢失并需要重建的逻辑是一个主要的痛苦。事实上,这是一个更大的系统中的一个组件,无论如何都会锁定远程主机,所以我们最终依赖这些信息来知道何时重建我们的DCOM连接。

答案 1 :(得分:1)

这些系统是否在DHCP上?监视DHCP续订以查看系统何时重新联机可能更容易。

答案 2 :(得分:0)

对微软和其他网站的细读不会产生任何有关WMI中“启动”事件的信息。但是,此thread建议在要监视的服务器上的启动文件夹中安装一些内容。

答案 3 :(得分:0)

通常根据我的经验,这是最好的活动(轮询/ ping /无论你想叫什么)

你不喜欢投票怎么样? (总的来说,我对大多数用途的投票都不喜欢,但这可能是一个很好的解决方案)

至少你可以做一些小的轻量级轮询过程,然后在机器状态发生变化时向一组订阅者发送事件。

然后,如果您找到了更好的解决方案,那么您已经有了事件接口。