我正在尝试使用PyWin32从Windows读取整个系统日志。今天早些时候我能够这样做,但是发生了一些变化,现在我只返回部分日志,特别是当我知道有数千个事件时,仅返回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)
关于可能发生的变化或我应该怎么做才能返回完整事件列表的任何想法?
根据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)