我想打开Windows事件日志的特定日志,名为“Microsoft-Windows-TerminalServices-RemoteConnectionManager” . 我用过这段代码:

import win32evtlog   

    logtype = 'Microsoft-Windows-TerminalServices-RemoteConnectionManager'
    hand = win32evtlog.OpenEventLog("",logtype)
    flags = win32evtlog.EVENTLOG_SEQUENTIAL_READ|win32evtlog.EVENTLOG_FORWARDS_READ
    while True:
        events = win32evtlog.ReadEventLog(hand, flags,0)
        if events:
            for event in events:
                print ('Event ID:', event.EventID & 0x1FFFFFFF)

但它不起作用,此代码打开“系统”日志,而不是“Microsoft-Windows-TerminalServices-RemoteConnectionManager” .

我真的不知道为什么 . 在“win32evtlog.OpenEventLog”的文档中:

指向以null结尾的字符串,该字符串指定返回的句柄将引用的源的名称 . 源名称必须是注册表中EventLog项下的日志文件条目的子项 . 例如,如果注册表具有以下形式,则源名称WinApp将是有效的:HKEY_LOCAL_MACHINE System CurrentControlSet

服务

事件簿

应用

WinApp

安全

系统
如果找不到源名称,则事件日志记录服务使用应用程序日志文件,而不包含事件标识符或类别的消息文件 . http://www.sxlist.com/techref/os/win/api/win32/func/src/f65_20.htm

是的,我在注册表中有子键,名为“Microsoft-Windows-TerminalServices-RemoteConnectionManager”,但在“系统”键中 .

HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ eventlog \ System \ Microsoft-Windows-TerminalServices-RemoteConnectionManager

为什么它不起作用?如果它不是一个bug,而是一个功能,那么阅读这个日志的方法是什么?

谢谢你的回答