2010-11-21 50 views
2

出于某种原因,EventLogEntry.Category返回一个数字而不是类别的文本。它返回与CategoryNumber属性相同的内容,我假设它不应该发生。我在这里做错了什么,或者有不同的方式来获取EventLogEntry的类别文本?从EventLogEntry.Category中获取类别文本

下面是一些代码重现错误:

Console.WriteLine(new EventLog("System").Entries[0].Category); 

这应该写类似“无”或“服务状态”事件(或任何相关的类别是你),而是将其写入“ (0)”。有什么想法,我在做什么错在这里?

+0

我已经试过这在许多不同的机器上,都具有相同的结果。类别文本永远不会被返回,只有数字。 – 2010-11-22 18:36:16

+0

Windows事件查看器(eventvwr)为这些事件显示什么?类别名称或数字? – 2010-11-22 22:07:17

+0

事件查看器显示正确的类别名称。 – 2010-11-23 23:15:38

回答

1

这是他们的API中的一个错误。我认为它不会很快解决。这只发生在Windows Vista和更高版本的操作系统中。因此,这实际上在XP,2000,2003等正常工作。

但是,还有另一种方法,你应该看看。看起来像这是以编程方式访问事件日志的较低级别的方法。该技术是Windows Management Instrumentation(WMI),并且在.NET中有一个接口,因此C#。

请查看以下链接:

Windows Management Instrumentation (WMI) Tutorial

Monitoring Remote Log Remotely using WMI in C# and .NET

Reading Widsows Event Log