Как получить PID из журнала событий Windows?

введите описание изображения здесьУ меня есть код Python, который использует модуль WMI Python для получения журналов просмотра событий Windows. Но я не могу получить PID процесса, создавшего журнал. Мой код:

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, но не нашел там ничего полезного.

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


person Umang Agrawal    schedule 12.10.2016    source источник


Ответы (1)


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

person patthoyts    schedule 12.10.2016
comment
Первый аргумент ReadEventLog — это дескриптор журнала событий, который нужно прочитать. Функция OpenEventLog возвращает этот дескриптор. Вы можете использовать дескриптор, чтобы получить pid. - person Marichyasana; 12.10.2016
comment
Оба предложения не решили то, что я искал. Если вы проверите журналы событий в Windows, в разделе сведений для определенного журнала вы найдете идентификатор процесса, который инициировал этот журнал, но я не могу найти способ его получить. - person Umang Agrawal; 17.10.2016