使用C#在Windows XP上的Windows事件查看器中从事件日志中读取xml

时间:2012-11-08 05:25:06

标签: c# windows-xp event-log

如何在Windows XP上使用C#从特定事件日志条目中获取xml?我已经知道事件日志类型(安全性)和事件条目ID。

EventLogWatcher和其他类只是Vista + ...

2 个答案:

答案 0 :(得分:0)

您可以使用LogParser执行此操作。它是一个由x Microsoft员工Gabriele Giuseppini构建的实用程序,它读取大量日志文件格式 - FAST

之前我已成功将其用于Event Logs

来自http://visuallogparser.codeplex.com

的优秀人才的C#界面

答案 1 :(得分:0)

对于 Windows XP,您可以使用 EventLogReaderEventLogQuery 类非常有效地从事件日志中查询 EventLogRecords。此 API 从 .NET Framework 3.5 开始可用(因此它应该可以在 Windows XP 上正常运行)。

首先,您需要要查询的事件日志的名称(其文件系统路径或名称),其次是用作记录选择器的 XPath 表达式。 https://docs.microsoft.com/en-us/windows/win32/wes/consuming-events

给出了一些示例

基本上,它的工作原理如下:

static string RetrieveApplicationEventDetailsXmlById(string eventId)
{
    const string logName = "Application";
    string queryExpression = string.Format("*[System/EventId=\"{0}\"]", eventId);
    var eventLogQuery = new EventLogQuery(logName, PathType.LogName, queryExpression);

    using (var reader = new EventLogReader(eventLogQuery)) 
    {
        EventRecord record;
        if ((record = reader.Next()) != null)
        {
            return record.ToXml();
        }
    }

    return null;
}

如果指定了有效的 XPath 表达式,则调用读取器的 Next 方法将返回下一个可用的 LogEventRecord 对象,该对象允许通过 { {1}} 方法。