| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 
课件制作网.
收藏本站
设为首页
安全365
如何在一个文件被添加到文件夹中后自动运行一个脚本?
如何在一个文件被添加到文件夹中后自动运行一个脚本?
作者:佚名 文章来源:不详 点击数: 更新时间:2007-1-26 9:19:56

WMI 事件的神奇功能,它使您可以编写脚本来监视所关心的事情(比如:文件被添加到文件夹中),然后在发生此类事件时,采取特定的行动。同时,这里有一个脚本可以监视 C:/Scripts 文件夹。只要有文件被添加到这个文件夹中,该脚本就会通过回显新文件的名称做出回应:

strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!//" & _
        strComputer & "/root/cimv2")
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
    ("SELECT * FROM __InstanceCreationEvent WITHIN 10 WHERE " _
        & "Targetinstance ISA 'CIM_DirectoryContainsFile' and " _
            & "TargetInstance.GroupComponent= " _
                & "'Win32_Directory.Name=""c:////scripts""'")
Do
    Set objLatestEvent = colMonitoredEvents.NextEvent
    Wscript.Echo objLatestEvent.TargetInstance.PartComponent
Loop

这里所涉及的内容太多,我们无法详细剖析该脚本,但是我们所要找的就是 __InstanceCreationEvent 类别的实例;只要计算机上创建了新的受控对象(即 WMI 所了解的对象),就会自动创建该类别的实例。虽然该查询有些复杂,但可以简单归结为:只要有新的项目出现在 C:/Scripts 里,我们就想得到通知。(请注意,C:////Scripts 不是打印错误;这里必须有四个斜杠。)我们还需要提一下,这类 WMI 脚本采用“轮询”的工作方式;它将定期检查是否有新的文件被添加到该文件夹中。在该示例中,我们每 10 秒检查一次(就是 WITHIN 10 所表示的),来确定该文件夹中是否有新的文件。如果这一频率过快或过慢,可以随意更改该值。但是,请记住两点。其一,如果轮询地过于频繁(比方说每秒执行一次),那么脚本就会一直在运行,从而在理论上会耗尽系统资源。喾矗绻弥瞪柚玫墓螅赡芑岽砉恍┬挛募偕柙诼盅奔涞嚼粗罢庑┪募捅惶砑硬⑺嬷簧境@纾偕枘慕疟久?5 分钟检查一次新文件。如果您添加了 100 个新文件,并在 3 分钟后将它们统统删除,那么该脚本将永远无法知道那些文件曾被添加到该文件夹中。这是因为这类脚本的工作原理是:将文件夹中的当前文件与脚本最后一次检查的文件夹中的文件进行比较。尝试采用不同的轮询时间间隔,看看哪个最合适。正如我们所注意到的,该脚本将回显任何被添加到 C:/Scripts 的新文件的名称。如果想在文件被添加到文件夹时做一些更有趣的事情,该怎么办呢?没问题;只要使用您想在检查到新文件时执行的代码替换这行代码就行了:Wscript.Echo objLatestEvent.TargetInstance.PartComponent顺便说一下,您想在文件从 C:/Scripts 中删除时得到通知吗?这很简单;只要针对 __InstanceDeletionEvent 类别的新实例监视 C:/Scripts 就行了:strComputer = "."
Set objWMIService = GetObject("winmgmts:" _
    & "{impersonationLevel=impersonate}!//" & _
        strComputer & "/root/cimv2")
Set colMonitoredEvents = objWMIService.ExecNotificationQuery _
    ("SELECT * FROM __InstanceDeletionEvent WITHIN 10 WHERE " _
        & "Targetinstance ISA 'CIM_DirectoryContainsFile' and " _
            & "TargetInstance.GroupComponent= " _
                & "'Win32_Directory.Name=""c:////scripts""'")
Do
    Set objLatestEvent = colMonitoredEvents.NextEvent
    Wscript.Echo objLatestEvent.TargetInstance.PartComponent
Loop

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

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

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