如何从Windows事件日志中检索PID?
问题描述:
我有一个Python代码,它使用Python的WMI模块来获取Windows事件查看器日志。但是我无法检索生成日志的进程的PID。 我的代码:如何从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文档,但找不到有用的东西。
我想检索上图中标记的信息。
答
获取事件日志项目的Win32 API调用为ReadEventLog,并返回EVENTLOGRECORD结构。这些没有用于进程标识符的字段,因此除非您的事件将此事件包含在事件消息的数据中,否则它将不可用。
ReadEventLog的第一个参数是要读取的事件日志的句柄。 OpenEventLog函数返回这个句柄。你可以使用手柄来获得pid。 – Marichyasana
这两个建议并没有解决我在找什么。如果您在Windows中检查事件日志,请在特定日志的详细信息部分下找到触发该日志的进程ID,但我无法找到检索它的方法。 –