我想按属性在Windows事件日志中搜索事件。
^{
因此,我可以查询系统启动事件并检索最后一个事件,如下所示:
import win32evtlog
hevq=win32evtlog.EvtQuery("System",win32evtlog.EvtQueryReverseDirection,\
"*[System[Provider[@Name='eventlog'] and (EventID=6009)]]",None)
hev=win32evtlog.EvtNext(hevq,1)[0]
但是我得到的是一些随机句柄,根据^{
但是,我不想解析它,而是想得到一个很好的ol'PyEventLogRecord
,就像我对^{
在仍然使用EvtQuery
的情况下,有没有办法做到这一点?我不想按顺序读所有的事件,有成千上万的事件。在
Vista Event Log API(名称以} 结构(这是
Evt
开头的函数)不使用^{PyEventLogRecord
所包装的),也不是设计用来表示的“new”事件。XML格式的字符串现在实际上是“本机”导出表示,而不是某种C结构(这解释了为什么Vista的事件查看器与XP的对应项不同)非常缓慢。只有使用这个API,人们才能访问Vista引入的“应用程序和服务日志”。在pywin32
不支持的)。它只支持直接输出完整的XML)。在pywin32
不包含任何解析XML的工具-可能是因为原始API也没有,而且作者不想用不相关的东西拖累库。Wevtapi.dll
没有使用成熟的XML库,因此它可能只输出一些可以以类似的即席方式解析的XML子集,但这将是一个定时炸弹,因为M$不能保证它是什么样的子集。在我最后用
lxml
解析“thissh1t”。知道了,尽管它是疯狂的,它现在是本机的表示,让我感觉更好的是安装和拖累我的程序与这样一个主要的库,这样一个简单和无关的任务。在相关问题 更多 >
编程相关推荐