| 网站首页 | 新闻中心 | 系统安全 | 网络安全 | 安全技术 | 下载中心 | 
课件制作网.
收藏本站
设为首页
安全365
为什么我的 LIKE 查询不能在 Windows 2000 上工作?
为什么我的 LIKE 查询不能在 Windows 2000 上工作?
作者:佚名 文章来源:不详 点击数: 更新时间:2007-1-23 19:26:23
问:

嗨,Scripting Guy!我尝试在 WMI 脚本中使用 LIKE 查询。这个查询在 Windows XP 计算机上工作得很好,但是在 Windows 2000 计算机上却不能工作。你知道我出了什么差错吗?

-- GS

答:

嗨,GS。实际上你没有任何错。您使用的是类似如下的脚本,这个脚本使用 LIKE 操作符来搜索计算机上文件名中包含 ~ (这些大多是临时文件)的所有文件:

strComputer = "."

Set objWMIService = GetObject _

    ("winmgmts://" & strComputer & "/root/cimv2")

Set colFiles = objWMIService.ExecQuery _

    ("Select * from CIM_DataFile where FileName Like '%~%'")

For Each objFile in colFiles

    Wscript.Echo objFile.Name

Next

并且您是对的:这在 Windows XP 和 Windows Server 2003 可以工作得很好,我们鼓励人们都来利用这一新功能,这个功能将是极其有用的。但是,Windows XP 和 Windows Server 2003 是仅有的两个支持 LIKE 操作符的平台,上述脚本在 Windows 2000(或 Windows NT 4.0 和 Windows 98)下就不能工作,因为这些平台不支持 LIKE 操作符。并且,在您提问以前,尚无任何更新旧版 Windows 以便可以支持这一功能的计划发布。很遗憾,我们也希望有这样的计划。

那么,有没有什么变通办法可以解决这个问题呢?有倒是有,但并不十分完美。您所能做的最好程度就是返回计算机上所有文件的列表,然后使用 VBScript 函数 InStr 来检查这些文件名中是否含有腭化符号 (~)。以下脚本可以实现这个目的,为了确保脚本可以运行得快点,我们添加了一个 WHERE 子句,用来将搜索限制在 Scripts 文件夹。否则,这个脚本就会返回计算机上所有文件的列表,这并不是我们在测试情况下所需要的:

strComputer = "."

Set objWMIService = GetObject _

    ("winmgmts://" & strComputer & "/root/cimv2")

Set colFiles = objWMIService.ExecQuery _

    ("Select * from CIM_DataFile WHERE Path = '//Scripts//'")

For Each objFile in colFiles

    If InStr(objFile.Name,"~") <> 0 Then

        Wscript.Echo objFile.Name

    End If

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

  • 下一篇文章:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
     
     
     
    系统进程中的dllhost.ex
    Linux为什么“种瓜得豆”
    是什么束缚了Linux?
    是什么束缚了Linux?
    微软为什么不想让你买XP
    什么是攻击防范策略

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