2008-09-24 89 views
37

我有一個應用程序創建了一些自定義事件日誌源以幫助過濾其輸出。如何從機器中刪除自定義源,而無需使用System.Diagnostics.EventLog.Delete編寫任何代碼作爲運行快速程序。在不使用代碼的情況下刪除自定義事件日誌源

我已經嘗試使用RegEdit從[HKEY_LOCAL_MACHINE \ SYSTEM \ ControlSetXXX \ Services \ Eventlog]中刪除自定義源,但應用程序的行爲就好像日誌仍然存在於幕後。

我還缺少什麼?

回答

40

我也認爲你是在正確的地方......它存儲在註冊表中,在事件日誌的名稱下。我有一個自定義事件日誌,其中有多個事件源。

HKLM \系統\ CurrentControlSet \服務\事件日誌\ LOGNAME \ LOGSOURCE1 HKLM \系統\ CurrentControlSet \服務\事件日誌\ LOGNAME \ LOGSOURCE2

這些來源有EventMessageFile關鍵,這是REG_EXPAND_SZ並指出:

C:\ WINDOWS \ Microsoft.NET \框架\ V2.0.50727 \ EventLogMessages.dll

我想如果你刪除了作爲日誌源的密鑰LOGSOURCE1在我的例子中應該是所有需要的。

對於什麼是值得的,我試過它通過.NET,這就是它做的。但是,它看起來像每個自定義事件日誌也具有相同名稱的來源。如果您有自定義日誌,那可能會影響您清除它的能力。也許你必須徹底刪除日誌。此外,如果您的應用程序具有安裝程序,則可以看到應用程序名稱也可以在應用程序事件日誌中註冊爲源。還有一個地方要清除。

+0

這就是它,刪除源鍵下的條目整理出來。乾淨的事件日誌和應用程序重新創建其來源並正確使用它們。謝謝! – Wolfwyrd 2008-09-24 18:07:30

+2

我討厭使用註冊表,但有時它是唯一的方法。可悲的是,你不能像EventLogs那樣有效地枚舉EventSources。你可以測試它的存在,提供一個名字,但是你不能循環它們。 – 2008-10-10 16:15:17

3

也許你的應用程序是容錯的,這意味着它檢查事件日誌源是否已經註冊,並且註冊源是否爲?

如果是這種情況,無論您做了什麼,您的應用程序都會在每次運行時重新創建源代碼。

+1

這可能是它的一部分。我們看到的問題是,不是寫入其自定義源,而是將其全部轉儲到應用程序日誌中。這個bug的來源已經修復,我們只是試圖清理事件日誌,所以我們可以重新開始。 – Wolfwyrd 2008-09-24 15:49:46

23

怎麼樣使用Powershell

Remove-EventLog -LogName "Custom log name" 

Remove-EventLog -Source "Custom source name" 
4

我能只能通過將其刪除:

[System.Diagnostics.EventLog]::Delete("WrongNamedEventLog"); 

在PowerShell中

相關問題