2011-04-06 60 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

相關問題