2014-02-20 51 views
0

該場景是我以管理員身份運行服務。如何暫時降低海拔

我們有一個運行自定義代碼的標註(思考腳本)。它使用codedom編譯來創建一個程序集並創建一個類型並調用一個方法(基於代碼)。

我想暫時刪除標註期間的管理權限,然後再恢復它們。

+0

所以,什麼東西阻止你? – Tarec

+0

我不知道如何做到這一點。我想象創建一個實現IDisposable的類,並在構造函數中刪除高程並將其恢復到析構函數中,但我不知道調用何時會放下高度並將其恢復。我想我可能需要知道當前的高程狀態,以便稍後恢復。 – Derek

+0

您可以從單獨的進程(從服務啓動)調用標註嗎?如果可能的話,請參閱http://stackoverflow.com/q/1173630。 – AlexD

回答

0

我不認爲你可以用你描述的方式「放棄」特權;您的服務以用戶身份運行,並允許該用戶進行一定的訪問。您可以要求Windows暫時授予您更多權限(這是UAC的全部內容),但您不能要求它減少您的權限!

爲了運行腳本(具有適當的訪問級別),我將在系統中創建第二個用戶,並在自定義代碼的持續時間內模擬該用戶。

原來我不知道我在說什麼。根據這個鏈接,UAC以相反的方式實現,通過創建一組有限的權限並在該上下文中運行代碼。

http://weblogs.asp.net/kennykerr/archive/2006/09/29/Windows-Vista-for-Developers-1320-Part-4-1320-User-Account-Control.aspx

+0

你很正確。糟糕! – MarcE