我目前正在使用的代碼在Windows Server 2003上運行,但需要能夠在多臺機器上寫入EventLog。我使用VS2008 Pro和.NET Framework 3.5編寫C#代碼。UAC給我適合!
代碼本身比較簡單(感謝框架):
using (EventLog remoteEvtLog = new EventLog(LogName, HostName, EventSource))
{
remoteEvtLog.WriteEntry(Body);
}
「LOGNAME」是包含日誌的名字寫爲一個字符串 - 在大多數情況下,「應用程序」。 「HostName」是一個字符串,其中包含應寫入日誌條目的計算機的NetBIOS名稱。 「EventSource」是一個包含事件發送者名稱的字符串(這是一個由多個應用程序使用的實用程序,所以通常它將具有消費應用程序的名稱)。 「Body」是包含要寫入事件日誌的文本的字符串。
在大多數情況下,這工作正常,但是當機器寫入使用UAC時,任何創建新EventSource的寫入都會失敗。即使所使用的安全證書是管理員組的成員,也會發生這種情況 - 而且我無法找到指定提升的特權級別的方法。顯然,管理員的goroup成員可以獲得兩個令牌 - 一個是有限的,另一個是提升的,但據我所知,指定升級令牌的唯一方法是通過UI - 遠程訪問日誌時顯然是一個問題。
有什麼想法嗎?
如何才能讓安裝程序(從VS安裝部署項目?)做到這一點? (對於高舉對不起)。 – Nate 2009-08-28 20:20:55
我不認爲你可以用VS安裝項目來做到這一點 - 它可以做的事情非常有限。您當然可以手動編輯Orcas中產生的MSI,但這非常不方便。一般來說,如果你發現你需要的不僅僅是安裝項目的優惠 - 這對於任何真實世界的應用程序幾乎都是確定的 - 你應該切換到WiX。 – 2009-08-28 22:22:11
在解決方案資源管理器中,右鍵單擊默認項目:選擇添加>新建項目 在對話框中,選擇安裝程序類模板,將其命名爲 添加新類 - 在調用InitializeCompnent() !代碼: 如果(EventLog.SourceExists(「MYSOURCE」)EventLog.CreateEventSource(「MYSOURCE」,「應用程序」); 添加安裝項目及新增主輸出 上的設置項目上單擊右鍵,選擇查看> CustomActions 右鍵單擊安裝文件夾,選擇添加自定義動作 選擇應用程序文件夾,然後選擇主輸出 - 單擊確定。 保存和生成 - 您添加的代碼運行在設置 – DragonsRightWing 2009-08-29 01:03:26