C ++: мониторинг создания и завершения процесса в Windows
Я случайно увидел следующую часть кодаВот.
$Obj.ExecNotificationQueryAsync($hObj, "SELECT * FROM __InstanceCreationEvent WITHIN 0.5 WHERE TargetInstance ISA 'Win32_Process'")
$Obj.ExecNotificationQueryAsync($hObj, "SELECT * FROM __InstanceDeletionEvent WITHIN 0.5 WHERE TargetInstance ISA 'Win32_Process'")
Switch $OB.Path_.Class
Case "__InstanceCreationEvent"
ConsoleWrite("+~>" & _ProcessGetPath($OB.TargetInstance.ProcessID) & @CR)
Case "__InstanceDeletionEvent"
ConsoleWrite("!~>" & $OB.TargetInstance.ProcessID & @CR)
EndSwitch
Я использовал то же самоеWQL
запросы для мониторинга процессов вC++
, Есть ли что-то подобное вC++
по которому я могу знать, было ли это создание или прекращение процесса. Я пытался с помощью__CLASS
, но это дает вывод какWin32_Process
, Я кодирую вMSVS2010
.
Пожалуйста, помогите. Спасибо
РЕДАКТИРОВАТЬ 1: WQL QUERY ADDED
hres = pSvc->ExecNotificationQueryAsync(
_bstr_t("WQL"),
_bstr_t("SELECT * "
"FROM __InstanceDeletionEvent WITHIN 1 "
"WHERE TargetInstance ISA 'Win32_Process' "),
WBEM_FLAG_SEND_STATUS,
NULL,
pStubSink);
hres = pSvc->ExecNotificationQueryAsync(
_bstr_t("WQL"),
_bstr_t("SELECT * "
"FROM __InstanceCreationEvent WITHIN 1 "
"WHERE TargetInstance ISA 'Win32_Process'"),
WBEM_FLAG_SEND_STATUS,
NULL,
pStubSink);
Используя приведенный выше код, я получаю имя процесса, созданного или завершенного, напечатанного в консоли из метода IWbemObjectSink :: Indicate.