共用方式為


UI 自動化安全性概觀

注意

本文件適用對象為 .NET Framework 開發人員,其想要使用 System.Windows.Automation 命名空間中定義的受控 UI 自動化類別。 如需 UI 自動化的最新資訊,請參閱 Windows 自動化 API:UI 自動化

本概觀說明 Windows Vista 中 Microsoft UI 自動化的安全性模型。

使用者帳戶控制

安全性是 Windows Vista 的主要焦點,其中的創新功能是讓使用者能以標準 (非系統管理員) 使用者身分來執行應用程式,而不必遭到封鎖而無法執行需要更高權限的應用程式與服務。

在 Windows Vista 中,大部分的應用程式都具備標準或系統管理語彙基元。 如果無法將應用程式識別為系統管理應用程式,根據預設,它就會啟動為標準應用程式。 在識別為系統管理的應用程式啟動之前,Windows Vista 會提示使用者是否同意以提高權限的方式執行應用程式。 即使使用者是本機 Administrators 群組的成員,預設也會顯示同意提示,因為在需要管理認證的應用程式或系統元件要求執行權限之前,系統管理員會以標準使用者身分執行。

需要更高權限的工作

當使用者嘗試執行需要系統管理權限的工作時,Windows Vista 會顯示對話方塊,詢問使用者是否同意繼續進行。 這個對話方塊會防止跨處理序通訊的存取,因此惡意軟體無法模擬使用者輸入。 同樣地,其他處理序通常也無法存取桌面登入畫面。

使用者介面自動化用戶端必須與其他處理序通訊,其中部分可能會以更高的權限層級執行。 用戶端也可能需要存取一般不會對其他處理序顯示的系統對話方塊。 因此,UI Automation 用戶端必須受系統信任,而且必須以特殊權限執行。

若要受信任以便與以較高權限層級執行的應用程式通訊,必須簽署應用程式。

資訊清單檔

若要取得對受保護系統 UI 的存取權,應用程式在建立時必須含有資訊清單檔,且該資訊清單檔的 requestedExecutionLevel 標籤必須含有 uiAccess 屬性,如下所述:

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
  <security>
    <requestedPrivileges>
      <requestedExecutionLevel
        level="highestAvailable"
        uiAccess="true" />
    </requestedPrivileges>
  </security>
</trustInfo>

這個程式碼中 level 屬性的值只是範例。

uiAccess 預設為 "false";也就是說,如果省略這個屬性,或者組件不具資訊清單,應用程式便無法取得受保護 UI 的存取權。