C ++: Prozesserstellung und -beendigung in Windows überwachen
Ich habe zufällig den folgenden Teil des Codes gesehenHie.
$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
Ich habe das gleicheWQL
Abfragen zur Überwachung von Prozessen inC++
. Gibt es etwas ähnliches inC++
woran ich erkennen kann, ob es sich um die Erstellung oder Beendigung eines Prozesses handelt. Ich habe versucht mit__CLASS
, aber es gibt die Ausgabe alsWin32_Process
. Ich programmiere inMSVS2010
.
Please help.Thankyou
EDIT 1: WQL-ABFRAGE HINZUGEFÜGT
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);
Mit dem obigen Code erhalte ich den Namen des Prozesses, der entweder erstellt oder beendet wurde, und der von der IWbemObjectSink :: Indicate-Methode in die Konsole gedruckt wird.