2011-04-06 56 views
12

我的Windows服务写入事件日志,但我有各种各样的问题得到这个正确的。所以在这个过程中我使用了许多不同的名字。我跟着一篇描述如何在Windows服务中设置事件日志的文章。所以在设计中添加EventLog组件后,我已经加入这个构造:我可以列出所有注册的事件源吗?

if (!System.Diagnostics.EventLog.SourceExists("AS0604")) 
    System.Diagnostics.EventLog.CreateEventSource("AS0604", "SIRR"); 

eventLog1.Source = "AS0604"; 
eventLog1.Log = "SIRR"; 
eventLog1.WriteEntry("AS is initializing...", EventLogEntryType.Information, 16); 

我发现有麻烦,如果源具有相同的名称作为Windows服务的服务名称。但我不断为Log和Source更改名称。

EventLog[] eventLogs = EventLog.GetEventLogs(); 

列出事件日志,我能够删除那些我没有使用EventLog.Delete命令。

但这是如何工作的?这些被删除的日志中是否还有注册的来源?我可以获得已注册来源的清单吗?

回答

7

从一个很好的玩弄它,它看起来像答案是你无法从这个API获取源的列表。删除日志将删除在其中注册的来源。

本页面告诉你如何做到这一点使用直接访问注册表:通过PowerShell的

http://codeidol.com/csharp/csharpckbk2/Diagnostics/Finding-All-Sources-Belonging-to-a-Specific-Event-Log/

+0

这个答案的链接仅是。请编辑答案以包含必要的信息;链接可能会在某个时候死亡。 (小心不要抄袭。) – jpmc26 2017-08-01 20:10:22

相关问题