系統管理員代理人模型
在系統管理員代理程式模型中,應用程式分成兩個程式。 其中一個程式是以標準使用者身分執行,另一個則以系統管理員許可權執行。
使用應用程式資訊清單,將標準使用者程式標示為 asInvoker的requestedExecutionLevel,並以requestedExecutionLevel of requireAdministrator標記系統管理程式。 使用者會先啟動標準使用者程式。 當使用者嘗試執行需要完整系統管理員存取權杖的作業時,標準使用者程式會呼叫 ShellExecute 函式來啟動系統管理程式。 ShellExecute函式會先提示使用者核准,再以使用者的完整系統管理員存取權杖執行應用程式。 系統管理程式接著可以執行需要系統管理員許可權的工作。
系統管理程式並未與標準使用者程式完全隔離。 系統管理程式可以啟用與標準使用者程式之間的處理序間通訊。 不過,這類通訊受限於預設強制完整性原則。 如需強制完整性考慮的詳細資訊,請參閱 設計應用程式以低完整性層級執行。
以下是系統管理員代理程式模型的可能用法:
- 開發精靈。 當硬體精靈判斷所需的驅動程式未安裝在電腦上或位於企業核准的位置時,它會呼叫提升許可權的應用程式,並能夠將驅動程式移至電腦存放區。
- Autorun.exe呼叫 Setup.exe。 當使用者從 CD 執行軟體時,Autorun.exe會以標準使用者身分執行,啟動以系統管理員身分執行Setup.exe,將軟體安裝到電腦上。
以下是使用系統管理員代理程式模型的缺點:
- 從應用程式轉換到應用程式可能會對使用者造成混淆。 很難通知使用者為什麼新的應用程式出現在監視器上。
- 在兩個應用程式之間傳遞狀態資訊可能很困難。 例如,您不會使用此模型在標準使用者控制台 (CPL) 與其系統管理員對應之間傳遞狀態資訊,只允許相同的 CPL 具有系統管理與標準使用者功能。 標準使用者 CPL 必須將其狀態儲存在某處。
- 在兩個程式之間分割功能時,可能會有許多複寫的程式碼。
相關主題