Python 2.7 PyWin32 ReadEventLog Returns 部分事件列表

Python 2.7 PyWin32 ReadEventLog Returns partial list of events

我正在尝试使用 PyWin32 从 windows 中读取整个系统日志。今天早些时候我能够这样做,但有些事情发生了变化,我现在只是 return 部分日志,特别是只有 14 个事件 return 当我知道有数千个时。

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)

对于 return 完整的事件列表,我有什么想法可以改变或我应该做什么?

根据msdn上的文档: Querying for Event Information

您需要读取记录块,直到到达日志末尾或发生错误。

尝试以下示例以获得正确的记录数:

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)