【问题标题】:How to read event logs with folders?如何使用文件夹读取事件日志?
【发布时间】:2012-12-29 02:13:04
【问题描述】:

我想以编程方式获取出现在 eventvwr 文件夹中的事件日志。这个适用于 Windows 8 应用程序:Microsoft-Windows-AppHost/Admin。我以管理员身份运行。

这不起作用:

System.Diagnostics.EventLog.SourceExists("Microsoft-Windows-AppHost/Admin");

这也不行:

EventLogQuery queryMicrosoftWindowsAppHost = new EventLogQuery("Microsoft-Windows-AppHost/Admin", PathType.LogName);
_eventsMicrosoftWindowsAppHost = new List<EventRecordWrittenEventArgs>();
_eventLogWatcherMicrosoftWindowsAppHost = new EventLogWatcher(queryMicrosoftWindowsAppHost);
_eventLogWatcherMicrosoftWindowsAppHost.EventRecordWritten += (object sender, EventRecordWrittenEventArgs e) =>
{
    _eventsMicrosoftWindowsAppHost.Add(e);
};
_eventLogWatcherMicrosoftWindowsAppHost.Enabled = true;

【问题讨论】:

  • 您是尝试从 Windows 应用商店应用程序(可能会工作)还是从桌面应用程序执行此操作? “不工作”是什么意思?例外?
  • 我正在尝试使用常规的旧 C# 控制台应用程序从 Appx 外部查询事件日志。我没有收到任何错误,只是找不到事件日志。查询事件日志的语法是否正确?即“Microsoft-Windows-AppHost/Admin”。

标签: c# windows-8 system.diagnostics


【解决方案1】:

您可以使用以下代码读取事件日志:

EventLogReader reader = new EventLogReader("Microsoft-Windows-AppHost/Admin");
var evt = reader.ReadEvent();
while (evt!= null)
{
    // Write the message to the console
    Console.WriteLine(evt.FormatDescription());
    evt = reader.ReadEvent();
}

如果你想附加你的处理程序,你的代码很接近,但你可以简单地将字符串传递给观察者,而不是使用查询对象:

var watcher = new EventLogWatcher("Microsoft-Windows-AppHost/Admin");
watcher.EventRecordWritten += (object s, EventRecordWrittenEventArgs e1) =>
    {
        Console.WriteLine(e1.EventRecord.FormatDescription());
    };
watcher.Enabled = true;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-09
    • 1970-01-01
    相关资源
    最近更新 更多