0

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(ここに問題があります)

4

1 に答える 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])

これは実際には完全な実装ではありませんが、軌道に戻ることを願っています!

于 2012-01-19T19:07:32.360 に答える