电脑配置:winxp 32位,administrator账号。文件系统:NTFS除C盘外其他的几个驱动器的文件都能正常查找。Sub WMITest()
Dim objWMIService As Object
Dim colFiles As Object
Dim objFile As Object
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
'获取各驱动器根目录的文件
Set colFiles = objWMIService.ExecQuery("Select * from CIM_DataFile where path = '\\'")
For Each objFile In colFiles
Debug.Print objFile.Name '其中显示了C盘根目录下的11个文件
Next
'获取C盘所有文件
Set colFiles = objWMIService.ExecQuery("Select * from CIM_DataFile where drive = 'C:'")
For Each objFile In colFiles
Debug.Print objFile.Name '只显示了4个C盘的文件,很奇怪
Next
Set objFile = Nothing
Set colFiles = Nothing
Set objWMIService = Nothing
End Sub
Dim objWMIService As Object
Dim colFiles As Object
Dim objFile As Object
Set objWMIService = GetObject("winmgmts:\\.\root\cimv2")
'获取各驱动器根目录的文件
Set colFiles = objWMIService.ExecQuery("Select * from CIM_DataFile where path = '\\'")
For Each objFile In colFiles
Debug.Print objFile.Name '其中显示了C盘根目录下的11个文件
Next
'获取C盘所有文件
Set colFiles = objWMIService.ExecQuery("Select * from CIM_DataFile where drive = 'C:'")
For Each objFile In colFiles
Debug.Print objFile.Name '只显示了4个C盘的文件,很奇怪
Next
Set objFile = Nothing
Set colFiles = Nothing
Set objWMIService = Nothing
End Sub
Sub Test()
Dim FSO As New FileSystemObject, bFile As File
For Each bFile In FSO.GetFolder("c:\").Files
Debug.Print bFile.Name
Next
End Sub
FSO可以正常获取。WMI用path作为搜索条件时也能正常获取。但搜索条件一旦包含了"C:"就不能正常获取了,比如:where name ='C:\\test\\1.doc'