Python 2.7 PyWin32 ReadEventLog Возвращает частичный список событий - PullRequest
0 голосов
/ 03 апреля 2020

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

logtype = "System"
server = "localhost"
hand = win32evtlog.OpenEventLog(server,logtype)
flags = win32evtlog.EVENTLOG_BACKWARDS_READ|win32evtlog.EVENTLOG_SEQUENTIAL_READ
events = win32evtlog.ReadEventLog(hand,flags,0)
win32evtlog.CloseEventLog(hand)

print len(events)

Любые мысли о том, что могло бы иметь изменилось или что мне делать, чтобы вернуть полный список событий?

1 Ответ

0 голосов
/ 03 апреля 2020

Согласно документу msdn: Запрос информации о событии

Вам нужно будет читать блоки записей, пока не дойдете до конца журнала или не произойдет ошибка.

Попробуйте следующие примеры, чтобы получить правильное количество записей:

import win32api
import win32evtlog
import win32security
import win32evtlogutil
logtype = "System"
server = "localhost"
hand = win32evtlog.OpenEventLog(server,logtype)
flags = win32evtlog.EVENTLOG_BACKWARDS_READ|win32evtlog.EVENTLOG_SEQUENTIAL_READ
num=0
while 1:
    objects = win32evtlog.ReadEventLog(hand, flags, 0)
    if not objects:
        break
    num = num + len(objects)

win32evtlog.CloseEventLog(hand) 
print(num)
...