如何编写事件日志类别

时间:2012-05-06 08:01:26

标签: c# windows event-log

我们知道,我们可以使用EventLog类来编写事件日志,但我对如何在事件日志中编写类别名称感到困惑。它提供了category参数,例如,WriteEntry类型之一是:

public void WriteEntry(
string message,
EventLogEntryType type,
int eventID,
short category


它只是在我的日志中显示数字。为什么类别的类型很短,而不是字符串?如何在事件查看器中显示类别名称?谢谢!顺便说一下,我们不会创建自定义的CategoryMessageFile。

2 个答案:

答案 0 :(得分:5)

您可以编写具有给定类别的事件日志条目,但是您需要使用在事件日志中注册的字符串资源表创建额外的本机dll。这会进一步使您的部署复杂化。 您目前必须在安装期间执行

  1. 要创建新的事件日志源,每次创建新源时都需要拥有管理员权限。因此,最好收集所有来源,以便在初始安装期间立即安装。
  2. 创建一个本机dll,其中包含您要提供的每个类别ID的字符串资源表。
  3. 在注册表中注册类别dll,以使Windows了解它。
  4. 现在,您可以使用重载来编写具有给定类别的事件日志消息。

    有一个很好的Dr. Jobs Journal article描述了你的问题。

答案 1 :(得分:0)

不要使用WriteEntry,您将收到安全例外。安装后不需要管理员权限。

使用WriteEvent代替:https://security.stackexchange.com/q/15857/396