我正在开发一个程序,需要知道如何根据记录号读取 Windows 事件日志的特定条目,该脚本已经具有该记录号。下面是我一直在使用的代码,但我不想遍历所有事件,直到找到我正在寻找的事件。有任何想法吗?
import win32evtlog
server = 'localhost' # name of the target computer to get event logs
logtype = 'System'
hand = win32evtlog.OpenEventLog(server,logtype)
flags = win32evtlog.EVENTLOG_BACKWARDS_READ|win32evtlog.EVENTLOG_SEQUENTIAL_READ
total = win32evtlog.GetNumberOfEventLogRecords(hand)
while True:
events = win32evtlog.ReadEventLog(hand, flags,0)
if events:
for event in events:
if event.EventID == "27035":
print 'Event Category:', event.EventCategory
print 'Time Generated:', event.TimeGenerated
print 'Source Name:', event.SourceName
print 'Event ID:', event.EventID
print 'Event Type:', event.EventType
data = event.StringInserts
if data:
print 'Event Data:'
for msg in data:
print msg
break
原文由 Zac Brown 发布,翻译遵循 CC BY-SA 4.0 许可协议
不!没有可用的函数允许您根据事件 ID 获取事件。
参考: 事件记录函数
只有其他感兴趣的方法是读取最旧的事件。
您将不得不以任何方式迭代结果,并且您的方法是正确的:)
您只能像下面这样更改方法的形式,但这是不必要的。
这与您所做的方式相同,但更简洁