过滤日志 Windows API:导出事件日志 (.evtx) 而不"run as administrator"



如何过滤使用以下方法检索到的windows事件查看器日志。我想取最后一个小时的日志。

[DllImport("kernel32.dll")]
static extern uint GetLastError();
[DllImport("wevtapi.dll", CharSet = CharSet.Unicode, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool EvtExportLog(IntPtr session, string channelPath, string query, string targetFilePath, int flags);
var success = EvtExportLog(IntPtr.Zero, "FilterLogs", "*", @"c:tempfiltered_app_log.evtx", 1);

我找到了一种查询和过滤事件查看器日志的方法。我在这里找到了MicrosoftMSDN文档和一篇相关文章,即如何从XPath查询中准备XPath过滤器查询。

只需复制XPath查询并在下面的代码中将其作为参数提供即可。

[DllImport("kernel32.dll")]
static extern uint GetLastError();
[DllImport("wevtapi.dll", CharSet = CharSet.Unicode, SetLastError = true)]
[return: MarshalAs(UnmanagedType.Bool)]
static extern bool EvtExportLog(IntPtr session, string channelPath, string query, string targetFilePath, int flags);
string query = "<QueryList><Query Id="0" Path="Application"><Select Path="Application"> *[System[TimeCreated[timediff(@SystemTime) &lt;=3600000]]]</Select></Query></QueryList>";
var success = EvtExportLog(IntPtr.Zero, "FilterLogs", query, @"c:tempfiltered_app_log.evtx", 1);

在我的情况下,我已经过滤了过去一个小时的事件。您可以在XPathQuery文章后面准备过滤器,并在查询中提供它。

最新更新