我无法使用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
它返回空结果,并在安全日志中创建重新“审核失败”。正如我所提到的,我可以查询所有其他日志,但不是这个特定的日志。 所以我猜问题在于
c = wmi.GetObject(这是一个问题)
答案 0 :(得分: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])
这不是一个完整的实现,但希望它能让你回到正轨!