我想讀取遠程計算機上的事件日誌以檢查測試期間的錯誤。這裏有一些相關的代碼:使用.NET遠程讀取事件日誌
public bool CheckEventLogs(DateTime start)
{
EventLog myEventLog = new EventLog("CustomLog", "ServerName");
bool errorFound = false;
foreach (EventLogEntry entry in myEventLog.Entries)
{
if (entry.EntryType == EventLogEntryType.Error && entry.TimeGenerated >= start)
{
Console.WriteLine("Error in Event Log:\n" + entry.Message + "\n");
errorFound = true;
}
}
return errorFound;
}
目前,這段代碼拋出一個異常(試圖執行未經授權的操作)。根據MSDN,我需要EventLogPermission,但我一直在努力尋找如何使用此權限的任何示例。有沒有人有如何做到這一點的例子?
編輯:迴應評論
謝謝大家的評論 - 這裏是要求的補充資料:
唯一的例外是從foreach
聲明拋出。具體來說,當單擊突出顯示in
之後的單步執行代碼時。看起來我能夠創建事件日誌對象,但我無法訪問事件日誌中的條目。
我的帳戶沒有權限讀取目標系統上的事件日誌,但我擁有帳戶的憑據。當通過事件查看器手動連接時,可以選擇以另一個用戶身份進行連接。手動完成後,我的代碼運行沒有問題。但是,我無法在每次運行該程序時手動執行此操作。我需要的是一種以程序方式作爲另一用戶進行連接的方式。我認爲EventLogPermission
將是這樣做的方式,但也許有另一種方式。如果有人知道如何在C#中以不同的用戶身份連接到遠程日誌,那就是我正在尋找的東西。
哪一行引發異常? MSDN文章只說你需要寫權限 - 它沒有提到任何關於閱讀的內容。 – Gabe 2011-03-15 14:31:11
您的用戶帳戶是否有權讀取遠程計算機上的事件日誌?打開事件查看器並嘗試從您的機器連接到遠程計算機進行檢查。 – 2011-03-15 14:56:15
我只是嘗試你的代碼,並從遠程服務器獲取日誌。一切正常。 – Polaris 2011-03-15 14:59:19