c# - 如何查看此事件日志是否存在?

标签 c# .net event-log eventlog-source

在我的一个项目中,我需要检查机器上是否存在事件日志“Microsoft-Exchange-ManagedAvailability/Monitoring”(事件源是 ManagedAvailability)。

我用过

EventLog.Exists("Microsoft-Exchange-ManagedAvailability/Monitoring")

EventLog.SourceExists("ManagedAvailability")

两者都返回false,但是事件日志确实存在。它位于“应用程序和服务日志”/Microsoft/下,请参见屏幕截图。

那么,如何查看这个日志是否存在呢?

谢谢

enter image description here

最佳答案

EventLog.Exists() 似乎只支持经典事件日志,不支持 new-since-Vista hyphenated-format-with-slash 格式。 Process Monitor表明它试图打开 HKLM\System\CurrentControlSet\Services\EventLog\Microsoft-Exchange-ManagedAvailability/Monitoring,它不存在 - 它在 HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\WINEVT\Channels\Microsoft-Windows-SENSE/Operational.

所以我猜你要么必须尝试打开并捕获失败异常(丑陋),要么获取所有事件日志的列表并找到你的:

EventLogSession.GlobalSession.GetLogNames().Any(
    s => string.Equals(s, "Microsoft-Exchange-ManagedAvailability/Monitoring", StringComparison.OrdinalIgnoreCase))

关于c# - 如何查看此事件日志是否存在?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34601030/

相关文章:

c# - 无法确定外键的复合外键顺序

c# - 在 C# 中使用 Delegate 类调用构造函数

c# - .Net5 身份注销

c# - 如何检索应用程序类别以外的事件日志?

asp.net - 写入事件日志时出现 System.Security.SecurityException

c# - 如何对事件日志中的 .NET 2.0 错误报告消息进行故障排除?

c# - 获取编辑器窗口的选定文本..visual studio 扩展

c# - 如何在 C# 中使用 `switch` 仅基于类型参数有条件地分支?

c# - 您在 C# 或 .NET 中见过的最奇怪的极端情况是什么?

.NET SQLite 和 Click-Once 部署