WMI - события
WMI: события
WQL
На WMI-хранилище можно смотреть как на базу данных.
WQL - WMI Query Language SELECT * From Win32_Process
SELECT * From Win32_Service Where Name=’W32Time’
objWMIService = GetObject("winmgmts:\\\\.\\root\\CIMV2");
var colItems = objWMIService.ExecQuery(
"SELECT * FROM Win32_Service " +
"where Name = 'W32Time' or Name = 'SkypeUpdate'");
var e = new Enumerator(colItems);
for(;!e.atEnd();e.moveNext()) {
WScript.Echo(e.item().Name);
}
События
События создания объекта, изменения объекта и удаления объекта.
wmi = GetObject("winmgmts:\\\\.\\root\\CIMV2");
serviceMonitor = wmi.ExecNotificationQuery(
"SELECT * FROM __InstanceModificationEvent " +
"WITHIN 1 WHERE TargetInstance ISA 'Win32_Service'");
WScript.Echo("Waiting for service to start/stop ...");
while (1) {
latestEvent = serviceMonitor.NextEvent();
instance = latestEvent.TargetInstance;
WScript.Echo ("Service Name: " + instance.Name );
}
__InstanceCreationEvent - событие на создание объекта
__InstanceModificationEvent - событие на изменение объекта
__InstanceDeletionEvent - событие на удаление объекта
Практика
- Скрипт, который не даёт запустить блокнот (через события).
- Отслеживание подключения USB-storage устройств, вывод в консоль имени подключенного диска (Win32_LogicalDisk).
Written on April 27, 2016
