Title:关于WMI的事件
Author:次碳酸钴
事件的动作通常只有以下四个,只是他们作用的对象不同而已。
__InstanceCreationEvent
__InstanceModificationEvent
__InstanceDeletionEvent
一下这个是所有动作同时监视
__InstanceOperationEvent
比如创建这个动作,对象可以是文件,可以是进程,可以是注册表项目等等。。
这些事件通常是使用WMI对象的ExecNotificationQuery来查询
ExecNotificationQuery返回的是一个事件对象,可以用一个NextEvent方法来读出监视对象的变化。
EventObject.NextEvent()是同步的,所以通常放在一个死循中,如果要实现异步的话可以使用多线程来做。
EventObject.Path_.Class是取监视的类型(动作)名。。也就是前面的那些动作的前三个。。。。。
EventObject.TargetInstance是获取事件作用的对象的实例名,差不多就是Sender了。。。
监视目标实例的种类
通常是在查询语句中用ISA连上的
这是常用的实例。。
CIM_DirectoryContainsFile
Win32_Directory
Win32_Process
Win32_LogicalDisk
监视原本就是一个死循环去持续取某个值,WITHin定义了这个周期的事件,也就是监视敏感度。。后面接秒数
查询语句通常是:
SELECT * FROM 监视动作 WHERE WITHin 周期秒数 Targetinstance ISA '监视目标实例的种类'
Author:次碳酸钴
事件的动作通常只有以下四个,只是他们作用的对象不同而已。
__InstanceCreationEvent
__InstanceModificationEvent
__InstanceDeletionEvent
一下这个是所有动作同时监视
__InstanceOperationEvent
比如创建这个动作,对象可以是文件,可以是进程,可以是注册表项目等等。。
这些事件通常是使用WMI对象的ExecNotificationQuery来查询
ExecNotificationQuery返回的是一个事件对象,可以用一个NextEvent方法来读出监视对象的变化。
EventObject.NextEvent()是同步的,所以通常放在一个死循中,如果要实现异步的话可以使用多线程来做。
EventObject.Path_.Class是取监视的类型(动作)名。。也就是前面的那些动作的前三个。。。。。
EventObject.TargetInstance是获取事件作用的对象的实例名,差不多就是Sender了。。。
监视目标实例的种类
通常是在查询语句中用ISA连上的
这是常用的实例。。
CIM_DirectoryContainsFile
Win32_Directory
Win32_Process
Win32_LogicalDisk
监视原本就是一个死循环去持续取某个值,WITHin定义了这个周期的事件,也就是监视敏感度。。后面接秒数
查询语句通常是:
SELECT * FROM 监视动作 WHERE WITHin 周期秒数 Targetinstance ISA '监视目标实例的种类'