我需要一些帮助,因为我是WMI Events的新手。 我正在尝试编写WQL查询来监视文件中发生的任何更改 放在特定文件夹中(C:\ Data) 我提出了以下查询,但WMIEvent从未发生过。
SELECT * FROM __InstanceModificationEvent WITHIN 1 WHERE TargetInstance ISA "CIM_DataFile" AND TargetInstance.Drive="C:" AND TargetInstance.Path="\\Data"
请您能否向我提供任何反馈,我做错了什么,或者您是否知道查询文件更改的其他方式我也会感激:)
答案 0 :(得分:0)
我认为问题在于您没有将查询中的\字符加倍。 \是WQL中的保留字符,因此您必须使用\来代替。下面是我使用的VBScipt,并且能够正常工作。我希望这有用!
Main
Sub Main()
WScript.Echo "Initializing WMI..."
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & _
strComputer & "\root\CIMV2")
Set EventSink = WScript.CreateObject( _
"WbemScripting.SWbemSink","SINK_")
WScript.Echo "WMI Initialized."
query = "SELECT * FROM __InstanceModificationEvent WITHIN 1 WHERE TargetInstance ISA 'CIM_DataFile' AND TargetInstance.Path='\\data\\'"
WScript.Echo "Executing Query..."
set results = objWMIservice.ExecNotificationQuery(query)
WScript.Echo "Query Returned."
Do
WScript.Echo "Waiting on events..."
Set evt = results.NextEvent
WScript.Echo "Modified Path:" + evt.TargetInstance.Path
WScript.Echo "Modified Path:" + evt.TargetInstance.Name
Loop
End Sub
您可能也有兴趣通过某种.NET语言(例如VB.NET或C#)来使用FileSystemWatcher来做同样的事情。