使用win32evtlog打开事件日志

时间:2014-02-10 15:20:04

标签: python windows winapi event-log pywin32

我想打开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)

但是它没有用,这段代码打开了" System" log,而不是#34; Microsoft-Windows-TerminalServices-RemoteConnectionManager"。

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

  

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

     

HKEY_LOCAL_MACHINE

     

系统

CurrentControlSet 

  Services 

    EventLog 

      Application 

        WinApp 

      Security 

      System 
     

如果找不到源名称,则事件记录服务使用   应用程序日志文件,没有事件标识符的消息文件或   类别。

     

http://www.sxlist.com/techref/os/win/api/win32/func/src/f65_20.htm

是的,我在注册表中有子键,名为" Microsoft-Windows-TerminalServices-RemoteConnectionManager",但在" System"键。

  

HKEY_LOCAL_MACHINE \系统\ CurrentControlSet \服务\事件日志\ SYSTEM \ Microsoft的Windows的TerminalServices-RemoteConnectionManager

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

感谢您的回答

0 个答案:

没有答案