我今天正在编写我的第一个Windows服务,并按照非常有用的步骤进行操作: http://msdn.microsoft.com/en-us/library/zt39148a(v=vs.110).aspx
一切正常。
当我使用该服务时,我开始编辑它以获取我的真实代码,这也很顺利。
但是我发现如果我在以下代码中更改事件日志的名称或来源,那么服务就不会启动。将其更改回演练中使用的名称可以让服务重新开始。
eventLog1 = new System.Diagnostics.EventLog();
if (!System.Diagnostics.EventLog.SourceExists("TwitterService"))
{
System.Diagnostics.EventLog.CreateEventSource(
"TwitterService", "TwitterLog");
}
eventLog1.Source = "TwitterService";
eventLog1.Log = "TwitterLog";
我只能猜测注册表包含对服务名称和日志文件的某种引用,除非它们匹配,否则不允许它运行,所以我删除了所有引用日志的注册表项。
但是仍然没有运气,在删除注册表项并使用原始名称重新启动服务后,将重新创建密钥。但不是用任何其他名称创建的。
如何更改LogFile名称?不是展示塞,但希望它有一些参考服务。
干杯
编辑:
感谢CodeCaster,我发现了有问题的错误消息。
来源' TwitterService'未在日志' TwitterLog'中注册。 (它 已在log' Application'。)
中注册
关注这篇文章:Event log write error我现在已经启动并正确登录服务了。
但现在它正在登录“应用程序”。记录,并需要行
System.Diagnostics.EventLog.DeleteEventSource("TwitterService");
在检查之前,它是为了启动而存在。
如何更改/设置TwitterService Source的注册位置?
我从未在任何地方注册过Original(MySource / MyNewLog)。
EDIT2:
这篇文章解释说需要重新启动才能让它在正确的位置登录。 Windows Event Log - how to register an event source? - 现在正在发挥作用。
感谢您的帮助
答案 0 :(得分:1)
我只能猜测注册表包含对服务名称和日志文件的某种引用,除非它们匹配,否则不允许它运行,所以我删除了所有引用日志的注册表项。
不可以,您的应用程序必须存在一个事件日志才能写入,并且您的进程必须以管理权限运行才能创建事件日志。
如果您在网站的搜索引擎中输入实际的异常文本(在您的问题中有用),您将找到非常有用的答案。
答案 1 :(得分:0)
如果您使用示例的事件源名称运行一次服务,请先卸载旧服务。之后,更改源名称并重新安装您的服务。这应该够了吧。
另外,请务必在EventLogInstaller
组件中更改它们(如果您正在使用)。