Проблема с пиктограммой Python WMI - PullRequest
0 голосов
/ 04 марта 2011

Не могу запросить журнал "Безопасность" с помощью 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 голос
/ 19 января 2012

Рассматривали ли вы путь 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])

Это не совсем полная реализация, но, надеюсь, она вернет вас в нужное русло!

...