2011-11-09 43 views
1

我試圖在我的c#應用程序中實現一個日誌記錄界面,它將事件記錄到本地或遠程的「Windows事件日誌記錄」。本地沒有問題,因爲System.Diagnostics是一個易於使用的命名空間。遠程窗口事件日誌記錄 - 授權

但是,在遠程機器上登錄(登錄另一臺計算機的Windows日誌)會導致身份驗證和授權問題,即「訪問被拒絕」。這是很容易理解的,因爲讓每個人都添加日誌是不合邏輯的。

我知道,在創建新的事件文件夾和源只能在本地完成,這一點我已經做了(姑且稱之爲「我的應用」,我也開始了「遠程註冊表」服務。

爲了方便,我爲了什麼推斷允許在測試日誌記錄功能與「eventcreate」的工具,究竟是不是在「以管理員身份運行」 CMD

eventcreate /s myLogServer /id 999 /T Error /L "My Application" /so "My Application" /d "Log Test" 

這自然失敗「錯誤:訪問被拒絕「。當我加

/u mydomain\myLogServer /p myPassword 

,那麼它工作正常。然而,自然我不想給myLogServer的管理員憑證。我寧願創建一個受限制的用戶,甚至更好,通過客戶端機器使用Windows身份驗證(希望當我不輸入任何/ u/p時會發生什麼)。

問題:如何設置它,以便只有指定的用戶才能將日誌寫入指定的日誌文件夾? 嘗試了註冊表項上的設置權限(HKEY_LOCAL_MACHINE \ SYSTEM \ CurrentControlSet \ services \ eventlog ..)。 嘗試設置事件日誌文件(* .evtx)的權限。

子問題:我是否需要在c#代碼中模擬指定的用戶才能獲得授權,或者是否有將驗證詳細信息添加到EventLog對象的方法?

回答

0

根據的TechNet here

在WindowsServer®2003用戶中,Windows Vista和WindowsServer®2008中,可以自定義在計算機上每個事件日誌的權限。此功能在以前版本的Windows中不可用。訪問控制列表(ACL)作爲安全描述符定義語言(SDDL)字符串存儲在註冊表中每個事件日誌的名爲「CustomSD」的REG_SZ值中。

+0

這樣的恥辱,我一直在Windows 7機器上測試這些:)。如果我也可以在Windows 7上完成這項工作,那會很好。 – Natan

+0

很確定這也適用於Windows 7。 – user957902