Windows EventLog - 事件ID 0

时间:2013-05-10 04:23:13

标签: windows event-log

我有一个使用EventLog进行日志记录的Windows服务应用程序。在app安装程序中,我运行:

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

然后在C#中的应用程序记录器中执行:

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

然而,当我查看Application EventLog时,除了我的事件之外,我还看到了具有EventID 0的条目。我不能使用eventcreate来创建ID = 0条目(ID必须是> = 1)。那么创造这些事件是什么?并且有没有办法阻止事件日志抱怨已损坏的安装?

一个示例条目说:

  

活动中包含以下信息:

     

服务已成功启动。

     

消息资源存在,但在字符串/消息表

中找不到该消息

2 个答案:

答案 0 :(得分:3)

你收到的文字是:

找不到源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

然后我所有的事件日志条目(甚至是旧条目)看起来都没有抱怨腐败

答案 1 :(得分:2)

ServiceBase类的属性为 AutoLog ,默认情况下为 true 。这意味着它将自动报告状态更改,如“开始”,“停止”,“暂停”和“继续”。 MSDN documentation is here

如果要将信息报告给自定义日志而不是应用程序日志,或者如果要取消这些事件日志条目,则应将 AutoLog 设置为 false 在你的构造函数中。