| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 
课件制作网.
收藏本站
设为首页
安全365
如何在每次拔掉网线时都能收到通知?
如何在每次拔掉网线时都能收到通知?
作者:佚名 文章来源:不详 点击数: 更新时间:2007-1-24 10:45:19
问:

您好,脚本专家!有没有什么方法让我在每次计算机上的网线被拔掉时都能收到通知?

-- DD

答:

您好,DD。很多人在成长过程中都有过这样的经历:您的奶奶或姨妈或某个亲戚,住在带有一个大阁楼的房子里,这个阁楼里塞满了东西。不可否认,大多数时间里,当您在阁楼里徘徊时,不知道该找什么,但是您常常会很偶然地找到一些很酷很有用的东西。每次造访阁楼都像是一次寻宝旅行,您永远都不知道会在那里找到什么。

在 WMI 中,“root/wmi”命名空间就相当于奶奶的阁楼。这里有相当多的资料 – 在 Windows XP 测试计算机上有 374 个类 – 但是大多数类不是没有实现就是不返回任何数据。不过,您时不时地会发现一个很有用的类,比如每次网络连接丢失时都向您发出通知的类。研究这个命名空间就像是寻宝一样。

事实证明,“MSNdis_StatusMediaDisconnect”类 – 一个 WMI 事件类 – 可以监视计算机并在每次网络连接丢失时(不论是因为拔掉了网线还是因为其他的原因)向您发出通知。还是像往常那样,我们先向您展示脚本,然后再说明它是如何工作的:

strComputer = "."



Set objWMIService = GetObject("winmgmts://" & strComputer & "/root/wmi")

Set colMonitoredEvents = objWMIService.ExecNotificationQuery _

    ("Select * from MSNdis_StatusMediaDisconnect") 



Do While True 

    Set strLatestEvent = colMonitoredEvents.NextEvent 

    Wscript.Echo "A network connection has been lost:"

    WScript.Echo strLatestEvent.InstanceName, Now

    Wscript.Echo 

Loop

如果您多少有点儿使用 WMI 事件脚本的经验,此脚本看起来会很熟悉。(如果您没有使用 WMI 事件脚本的经验,则您可能需要看一看Scripting Week 2 webcast 网络广播。)首先,我们连接到 WMI 服务;请注意,我们应连接到 root/wmi 而不是 root/cimv2。然后,我们使用“ExecNotificationQuery”申请在每次创建“MSNdis_StatusMediaDisconnect”类的新实例时都收到通知。您可能已经猜到了,每次网络连接丢失时都会创建此类的新实例。

然后,我们设置一个无限循环;通过设计,此脚本将连续不断地监视计算机上 MSNdis_StatusMediaDisconnect 类的新实例。(实际上,使脚本停止监视的唯一方法就是终止该脚本或该脚本过程。)然后此脚本暂停在以下这行代码上,等待下一个网络断开事件:

Set strLatestEvent = colMonitoredEvents.NextEvent

那么,如果我们拔开网线并将计算机从网络中断开,会发生什么事情呢?在这种情况下,将发生一个网络断开事件,将创建 MSNdis_StatusMediaDisconnect 类的新实例,且该脚本将发布与以下类似的通知:

A network connection has been lost:

Microsoft Wireless Notebook Adapter MN-720 3/172005 8:28:34 AM

很酷吧?然后该脚本继续循环并等待下一个网络断开的发生。如果再次发生这样的网络断开事件,便发布另一个通知。

附注。当然,并不局限于将您的消息回显到屏幕。您可以让您的脚本在发生网络断开时执行任何操作;我们只是想将情况简单化。

顺便提一句,有一个相似的类“MSNdis_StatusMediaConnect”,该类可在每次网络连接完成后向您发出通知。以下就是用于完成此操作的示例脚本:

strComputer = "."



Set objWMIService = GetObject("winmgmts://" & strComputer & "/root/wmi")

Set colMonitoredEvents = objWMIService.ExecNotificationQuery _

    ("Select * from MSNdis_StatusMediaConnect") 



Do While True 

    Set strLatestEvent = colMonitoredEvents.NextEvent 

    Wscript.Echo "A network connection has been made:"

    WScript.Echo strLatestEvent.InstanceName, Now

    Wscript.Echo 

Loop

遗憾的是,我们不知道将这两个脚本合成一个脚本(即一个在网络连接时和网络断开时都会对您进行通知的脚本)的简便方法。虽然目前至少有一种方法可以做到这一点,但是该方法会带来一些安全问题,所以我们不推荐使用它。那么,若要同时监视这两种事件,您暂时需要分别运行两个独立的脚本。但是我们将会继续在整个 WMI 阁楼里翻箱倒柜;谁知道我们还能在那里找到别的什么东西呢。

【转自世纪安全网 http://www.21safe.com】
文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
     
     
     
    CSO们如何应对新技术的安
    普通企业如何应对黑客攻
    企业该如何防范由VoIP引
    浅谈IT如何实现企业的应
    黑客与正规企业是如何串
    如何无限制申请Gmail 2.
    企业如何避免人为因素的
    社会工程学:如何利用黑客
    如何在一个文件被添加到
    如何将“珊瑚虫”好友请

    Copyright © 2006-2008 www.anquan365.com 安全365
    建议使用1024*768分辨率及第三方浏览器对本站进行浏览