Windows事件日志-事件ID 0

4

我有一个使用EventLog来记录日志的Windows服务应用程序。在应用程序安装器中,我运行以下命令:

eventcreate /L APPLICATION /SO "My App" /T SUCCESS /id 1 /D "Initialised Log"

然后在我的C#应用程序日志记录器中,我这样做:

EventLog.WriteEntry(message, EventLogEntryType.Error, 1, 0, details);

然而,当我查看应用程序事件日志时,除了我的事件外,我还看到了事件ID为0的条目。我无法使用eventcreate创建ID=0的条目(说ID必须大于等于1)。那么是什么在创建这些事件?是否有任何方法可以阻止事件日志抱怨损坏的安装程序?
一个示例条目如下:
"以下信息已包含在事件中:服务已成功启动。消息资源存在,但在字符串/消息表中未找到该消息。"
2个回答

6

您是否遇到以下文本:

源“myApp”的事件ID 0的描述未找到。引发此事件的组件可能未安装在您的本地计算机上,或者安装已损坏。您可以在本地计算机上安装或修复该组件。

在所有事件日志条目之前,正确显示错误信息?

我在使用eventcreate后遇到了这个问题,只能通过编辑注册表来解决。

HKLM\System\CurrentControlSet\Services\Eventlog\Application\MyEventSource

customSource (1)
EventMessageFile %SystemRoot%\System32\EventCreate.exe
TypesSupported (7)

我把这个改成了:

EventMessageFile C:\Windows\Microsoft.NET\Framework\v4.0.30319\EventLogMessages.dll

然后所有的事件日志条目(即使是旧的)看起来都没有出现损坏的警告


4
ServiceBase 类有一个属性 AutoLog,默认值为 true。这意味着它将自动报告状态更改,如启动、停止、暂停和继续。如果您想向自定义日志报告信息,而不是应用程序日志,或者如果您想抑制这些事件日志条目,则应在构造函数中将 AutoLog 设置为 false。有关详细信息,请参阅 MSDN 文档

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接