【发布时间】:2020-06-03 12:46:03
【问题描述】:
我想在 Windows 事件日志中打开一个名为“Microsoft-Windows-TerminalServices-LocalSessionManager”的特定日志。我使用了这段代码:
import win32evtlog
server = 'localhost' # name of the target computer to get event logs
logtype = 'HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\eventlog\System\Microsoft-Windows-TerminalServices-LocalSessionManager'
hand = win32evtlog.OpenEventLog(server,logtype)
flags = win32evtlog.EVENTLOG_SEQUENTIAL_READ|win32evtlog.EVENTLOG_FORWARDS_READ
total = win32evtlog.GetNumberOfEventLogRecords(hand)
while True:
events = win32evtlog.ReadEventLog(hand, flags,0)
if events:
for event in events:
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)
但它不起作用,此代码打开“系统”日志,而不是“Microsoft-Windows-TerminalServices-LocalSessionManager”。 为什么它不起作用?如果不是bug,而是特性,那么读取这个日志的方法是什么?
感谢您的回答
【问题讨论】:
-
对我来说,它从“系统”而不是“转发的事件”中读取
-
也许你遇到了这个错误github.com/mhammond/pywin32/issues/676。解决方案是使用较新的 Evt* 函数。如mail.python.org/pipermail/python-win32/2012-May/012292.html 所述。我没有测试任何东西,因为我不使用 Windows。只是google了一下。希望对您有所帮助。