0

我正在尝试使用 System.Diagnostics 中的 EventLog 类读取存储的 .evtx。但它不起作用。

是否可以使用 EventLog 类读取存储的 evtx 文件,或者问题出在哪里?

以下是我的代码

string source = @"S:\test.evtx";

                    EventLog eventLog = new EventLog();
                    eventLog.Source = source;

                    foreach (EventLogEntry log in eventLog.Entries)
                    {
                        Console.WriteLine("{0}\n", log.Message);
                    }
4

1 回答 1

1

EventLog 的 Source 属性是指事件查看器中的应用程序源,而不一定是您导出的源文件。

在此处输入图像描述

您需要为 Source 属性提供应用程序的名称,而不是文件名。

更新:如果您坚持从 evtx 读取,那么 EventLogReader 类必须是解决方案。

//EVENT LOG READER
        string source = @"C:\testev.evtx";

        using (var reader = new EventLogReader(source, PathType.FilePath))
        {
            EventRecord record;
            while ((record = reader.ReadEvent()) != null)
            {
                using (record)
                {
                    Console.WriteLine("{0} {1}: {2}", record.TimeCreated, record.LevelDisplayName, record.FormatDescription());
                }
            }
        }

//EVENT LOG
        EventLog eventLog = new EventLog();
        eventLog.Source = "ESENT"; //name of an application

        foreach (EventLogEntry log in eventLog.Entries)
        {
            Console.WriteLine("{0}\n", log.Message);
        }

在此处输入图像描述

在此处输入图像描述

于 2018-04-16T08:36:35.940 回答