Существует ли WQL-запрос для уведомления о событиях, который можно использовать для отслеживания событий в указанные секунды после времени

Я пытаюсь зарегистрировать события журнала в системе с помощью WMI на C++. Изначально мой код извлекает все журналы, которые были зарегистрированы до этого момента времени, используя следующий код.ДРУГАЯ ЛОГИКА РАБОТАЛА, СЕЙЧАС СПЕЦИАЛЬНО НУЖНО РЕШЕНИЕ В ФОРМИРОВАНИИ ЗАПРОСА

IEnumWbemClassObject* pEnumerator = NULL ; 
    hr = pSvc->ExecQuery (
        bstr_t("WQL"),
        bstr_t("Select * from Win32_NTLogEvent"),
        WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
        NULL,
        &pEnumerator);

После того, как я извлекаю все журналы, которые зарегистрированы до экземпляра времени, и сохраняю их, я назначаю временного потребителя, который отслеживает создание любого события журнала, которое регистрируется после этого времени. Я использую следующий код для него

IEnumWbemClassObject* pEnumerator = NULL ; 
    hr = pSvc->ExecNotificationQuery (
        bstr_t("WQL"),
        bstr_t("select * from __InstanceCreationEvent where TargetInstance ISA 'Win32_NTLogEvent'"),
        WBEM_FLAG_FORWARD_ONLY | WBEM_FLAG_RETURN_IMMEDIATELY,
        NULL,
        &pEnumerator);

Теперь моя проблема заключается в том, что я могу пропустить события журнала, которые произошли между этими двумя процессами. У меня есть детали времени, до которых получение выполняется в первом процессе (т. Е. Метод ExecQuery). Теперь я могу решить свою проблему, если я возможность изменить запрос второго процесса (т. е. метод ExecNotificationQuery), чтобы запустить мониторинг со времени, когда первый процесс осуществил свой последний поиск. Есть ли такие возможности и как это можно сделать. Спасибо заранее.

0 ответов

Другие вопросы по тегам