2016-10-12 8 views
0

enter image description here У меня есть код python, который использует WMI-модуль python для получения журналов просмотра событий Windows. Но я не могу получить PID процесса, который сгенерировал журнал. Мой код:Как получить PID из журнала событий Windows?

wmi_obj = wmi.WMI('.') #Initialize WMI object and query. 
wmi_query = "SELECT * FROM Win32_NTLogEvent WHERE Logfile='System' AND EventType=1" 
query_result = wmi_obj.query(wmi_query) # Query WMI object 

query_result список объектов WMI. Каждый объект в этом списке является системным журналом Windows, и я хочу, чтобы PID процесса, сгенерировавшего этот журнал. Я прошел несколько документов msdn, но не нашел ничего полезного.

Я хочу получить информацию, указанную на изображении выше.

ответ

0

Вызов API Win32 для получения записей журнала событий - ReadEventLog, и это возвращает EVENTLOGRECORD структур. У них нет поля для идентификатора процесса, поэтому, если ваши события не включили его в данные сообщения о событии, похоже, что это будет недоступно.

+0

Первый аргумент ReadEventLog - это дескриптор журнала событий, который необходимо прочитать. Функция OpenEventLog возвращает этот дескриптор. Вы можете использовать ручку для получения pid. – Marichyasana

+0

Оба предложения не решили то, что я искал. Если вы проверите журналы событий в Windows, в разделе сведений для конкретного журнала вы найдете идентификатор процесса, который вызвал этот журнал, но я не могу найти способ его получить. –