2009-12-16 83 views
10

我寫了一個服務,網站可以使用ExecuteCommand方法遠程執行命令。我注意到,如果網站沒有在遠程機器上的管理員用戶下運行,那麼我會在嘗試執行命令時遇到權限被拒絕異常。servicecontroller權限

servicecontroller類甚至不允許您指定任何驗證參數。這是正確的嗎?是否有一組特定的用戶需要的privelages而不是管理員,因爲我不願意將我們集羣中的所有webservers用戶添加爲服務器上的本地管理員?

回答

5

您必須暫時模擬當前線程的管理員用戶,然後恢復。在MSDN中查找WindowsIdentity.Impersonate()

ServiceController將使用當前線程的主體來創建註冊表和服務控制管理器調用,並且如果要操縱服務,則必須確保將其設置爲管理用戶。缺點是您需要在帳戶的某處存儲密碼,請確保您使用的是SecureString而不是以純文本格式存儲密碼。

+0

如果可能,我建議讓用戶在每次運行命令時都輸入他們的管理員密碼。這樣你就避免了存儲它。不過,這可能不適用於你的情況。 – John 2015-05-14 19:10:46