我正在處理將用作登錄腳本的C#程序。出於診斷目的,我希望能夠寫入應用程序日誌。不幸的是,我發現的所有文檔都指出,如果不查詢安全日誌,需要提升權限才能創建事件源;這顯然是一個登錄腳本的禁行。如何在不提升權限的情況下創建事件源?
有沒有什麼辦法可以讓我在沒有這個海拔請求的情況下創建事件源?或者,是否有另一個位置或預先存在的事件源,對我來說可能更有意義用於記錄目的?
我正在處理將用作登錄腳本的C#程序。出於診斷目的,我希望能夠寫入應用程序日誌。不幸的是,我發現的所有文檔都指出,如果不查詢安全日誌,需要提升權限才能創建事件源;這顯然是一個登錄腳本的禁行。如何在不提升權限的情況下創建事件源?
有沒有什麼辦法可以讓我在沒有這個海拔請求的情況下創建事件源?或者,是否有另一個位置或預先存在的事件源,對我來說可能更有意義用於記錄目的?
我不認爲你可以沒有海拔。在註冊表中可能會有一些權限可以更改,但是這需要提升,趕上22.
但是,登錄到文本文件沒有任何問題。只要使用該程序的人知道這是日誌的位置,那麼文本文件也可以正常工作。
在封面下,creating an event source要求寫入HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\EventLog
註冊表項,該註冊表項只能由管理用戶寫入。因此,任何建立在此之上的API都將需要提升權限。創建事件源將是你在升級後需要做的事情。
但是,一旦您創建了事件源,實際上報告事件不需要提升權限。如果您可以運行安裝程序,則安裝程序可以請求提升並創建事件源;然後你的應用程序就像任何其他應用程序一樣報告事件。但我認爲這在登錄腳本中是一種不可行的情況。
是的,我希望我可以保持所有的日誌記錄在同一個地方,但我認爲你對日誌文件的建議確實是最好的方式。我正在查看Apache的log4net。我想,如果我不能在寫入事件日誌時進行標準化,至少我會使用某種標準日誌記錄API來創建文本文件。 – bshacklett
+1 - 它更傾向於在這個密封艙口的另一側。 –