7

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

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

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

4

2 回答 2

6

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

  1. 要创建新的事件日志源,您需要在每次创建新源时拥有管理员权限。因此,收集所有源代码是明智的,这样您就可以在初始安装期间立即安装。
  2. 创建一个本机 dll,其中包含您要提供的每个类别 ID 的字符串资源表。
  3. 在注册表中注册类别 dll 以使 Windows 知道它。

现在您可以使用重载来编写具有给定类别的事件日志消息。

有一篇非常好的Dr. Jobs Journal 文章准确描述了您的问题。

于 2012-05-06T08:53:17.127 回答
0

不要使用 WriteEntry,你会得到一个安全异常。安装后不需要管理员权限。

改用 WriteEvent 参见:https ://security.stackexchange.com/q/15857/396

于 2012-06-08T23:01:26.717 回答