Python WMI 标识符问题

0 投票
1 回答
816 浏览
提问于 2025-04-16 13:00

我无法通过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(这里是问题所在)

1 个回答

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])

这其实并不是一个完整的实现,但希望能帮你重新找到方向!

撰写回答