2012-11-17 58 views
7

我有一個用VSTO 2010開發的outlook插件,我想寫一些事件日誌。在調試時我能得到這個通過簡單地做以下工作:Outlook插件可以寫入系統事件日誌嗎?

if (!EventLog.SourceExists(ADDIN_FRIENDLY_NAME)) 
{ 
    EventLog.CreateEventSource(ADDIN_FRIENDLY_NAME, null); 
} 
EventLog.WriteEntry(ADDIN_FRIENDLY_NAME, message, EventLogEntryType.Warning); 

的問題是發行版本加載項沒有管理員權限讀取日誌。我發現一些文章談到在安裝過程中創建EventLog源,但我使用ClickOnce,似乎沒有辦法做到這一點。此外,有人談到創建一個單獨的DLL,然後在該DLL上調用InstallUtil來創建源代碼。這對我來說不起作用,因爲這仍然需要管理員權限。

是否可以使用Outlook的安全級別進行加載項運行?我在事件日誌中看到Outlook的消息,因此它必須有足夠的權利來執行此操作。

+2

如果沒有管理員權限,則無法創建事件源。所以,你需要改變你的策略並寫信給其他人。 –

+0

感謝John,我確實認爲這是一個選項,但想檢查是否可以在與Outlook相同的安全級別上運行加載項。我總是可以使用正常的文件記錄。 – user1715925

+0

您可以隨時嘗試登錄到遠程數據庫 - 這使得彙總報告更加簡單。 – SliverNinja

回答

1

您可以嘗試使用this article中提出的解決方案以管理員身份運行點擊一次,但我認爲這不是一個好的解決方案。

也許一個更好的解決方案是在你的click-once包中包含一個標準的.msi設置,你可以在你第一次安裝你的插件時執行它。這個msi只是創建事件源。

關於你的問題:

是否有可能在使用Outlook的安全級別加載運行?

我不認爲您的加載項使用不同的安全級別運行,但可能啓用了UAC,因此如果您是管理員,則無法執行管理操作。

+0

標記爲答案,因爲它對我的問題確實如此。至於我最終做的解決方案,爲了簡單起見,我寫了單獨的代碼寫入當前用戶的文檔文件夾下的文本日誌文件。 – user1715925