Как я могу перечислить EventIDs с квалификаторами, используя win32evtlog - PullRequest
0 голосов
/ 21 июня 2019

При запуске простого win32evtlog - я могу перечислить большое количество событий - но когда я выбираю те, которые мне нужны; например 6005, они не появляются. Я отфильтровал те, которые видны, и их можно найти.

В следующем коде (Python 3.7 и win32 v222), если вы возьмете оператор IF для 6005, вы получите ряд событий. Измените оператор IF на одно из чисел; например 16, вы должны получить некоторые результаты.

import win32evtlog as wlg

handle = wlg.OpenEventLog(None,'System')
flags = wlg.EVENTLOG_BACKWARDS_READ|wlg.EVENTLOG_SEQUENTIAL_READ

while True:
    events = wlg.ReadEventLog(handle, flags, 0)
    for event in events:
        if event.EventID == 6005:
            print('Event ID:', event.EventID)
            print('Time Generated:', event.TimeGenerated)

Я могу вернуть результаты, используя Powershell, и ручная проверка найдет 6005 в Windows Event Viewer.

Get-EventLog -LogName system | where-object {$_.eventid -eq 6005}

С некоторыми исследованиями, когда я писал этот вопрос - я обнаружил, что в API событий есть другой метод для определенных событий, поскольку они включают в себя квалификаторы:

<EventID Qualifiers="32768">6005</EventID>  

Так что, похоже, мне нужно найти способ конвертировать квалифицированные события (иногда называемые InstanceID) аналогично тому, как это делает код Scalyr [Линия 375 +]
Я не могу расшифровать код atm, поскольку я все еще учусь, но я понимаю суть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...