【问题标题】:Anyone has sample code that makes WMI queries to the CIM_DataFile class?任何人都有对 CIM_DataFile 类进行 WMI 查询的示例代码?
【发布时间】:2009-06-02 23:04:09
【问题描述】:

SELECT 获取有关文件或目录的信息的东西?真正有效的东西?

语言无所谓,我最感兴趣的是查询语法。

【问题讨论】:

    标签: .net wmi


    【解决方案1】:

    这里有一些例子:

    • 查询文件:

      SELECT * FROM CIM_DataFile WHERE Name='C:\\WINDOWS\\NOTEPAD.EXE'
      SELECT * FROM CIM_DataFile WHERE Drive='C:' AND Path='\\Windows\\' AND FileName='Notepad' AND Extension='EXE'
      
    • 查询文件夹:

      SELECT * FROM CIM_Directory WHERE Name='C:\\Windows'
      SELECT * FROM CIM_Directory WHERE Drive='C:' AND Path='\\Program Files\\' AND FileName='Internet Explorer'
      

    有关查询语法的详细信息,请参阅WQL (SQL for WMI)。另请参阅CIM_DataFileCIM_Directory,了解可在SELECTWHERE 子句中使用的文件和文件夹属性列表。

    【讨论】:

      【解决方案2】:

      我已经找到了答案,这一切都是由我的一个愚蠢错误引起的:我没有将路径字符串中的反斜杠加倍,并认为它正在完成。此外,您必须在 WHERE 子句中指定所有四个字段:驱动器、路径、文件名和扩展名。

      【讨论】:

        【解决方案3】:

        WMI Code Creator 有一些帮助。
        请参阅此代码:

        strComputer = "." 
        Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\CIMV2") 
        Set colItems = objWMIService.ExecQuery( _
            "SELECT * FROM CIM_DataFile",,48) 
        For Each objItem in colItems 
            Wscript.Echo "-----------------------------------"
            Wscript.Echo "CIM_DataFile instance"
            Wscript.Echo "-----------------------------------"
            Wscript.Echo "AccessMask: " & objItem.AccessMask
            Wscript.Echo "Archive: " & objItem.Archive
            Wscript.Echo "LastAccessed: " & objItem.LastAccessed
            Wscript.Echo "LastModified: " & objItem.LastModified
            Wscript.Echo "Manufacturer: " & objItem.Manufacturer
            Wscript.Echo "Name: " & objItem.Name
            Wscript.Echo "Path: " & objItem.Path
            Wscript.Echo "Readable: " & objItem.Readable
            Wscript.Echo "Status: " & objItem.Status
            Wscript.Echo "System: " & objItem.System
            Wscript.Echo "Version: " & objItem.Version
            Wscript.Echo "Writeable: " & objItem.Writeable
        Next
        

        编辑

        这个样本是你正在寻找的Enumerating All the Files on a Computer

        试试这种查询格式:

        Select * From Win32_Directory Where FileName = 'Scripts'
        

        这里有更多关于查询WQL using LIKE的信息。
        也试试这个:Scriptomatic 2.0

        【讨论】:

        • 获取每一行(即任何文件)的查询对我没有好处。我需要一个 WHERE 子句来仅从一个文件中获取信息。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-10-31
        • 1970-01-01
        • 1970-01-01
        • 2022-11-10
        相关资源
        最近更新 更多