2011-03-04 41 views
0

我無法使用WMI查詢日誌「安全性」。其他日誌工作正常。這裏是我使用的:Python WMI綽號問題

import wmi 
c = wmi.GetObject(r"winmgmts:{impersonationLevel=delegate,(Security)}!\\.\root\cimv2") 
for i in c.ExecQuery("SELECT * FROM Win32_NTLogEvent WHERE Logfile = 'Security'"): 
    print i 

它返回我空的結果,並在安全日誌中創建reacord「審計失敗」。正如我所提到的,我可以查詢所有其他日誌,但不是特定的。 所以我想問題是

C = wmi.GetObject(這裏是一個問題

回答

1

你有沒有考慮過的win32evtlog方式?這是我在過去使用的一部分,它似乎運作良好...

import win32evtlog 

outfile = open('NTLog.log', 'w') 
server = 'SERVER_Name' 
logtype = 'Security' 
hand = win32evtlog.OpenEventLog(server, logtype) 
flags = win32evtlog.EVENTLOG_BACKWARDS_READ|win32evtlog.EVENTLOG_SEQUENTIAL_READ 
total = win32evtlog.GetNumberOfEventLogRecords(hand) 
count = 0 
while count != total: 
    events = win32evtlog.ReadEventLog(hand, flags,0) 
    if events: 
     for event in events: 
      data = event.StringInserts 
      if data: 
       outfile.write(data[0]) 

這是不是一個真正的完全實現,但希望它可以讓你回到正軌!