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.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage