共用方式為


用戶帳戶控制

注意

此設計指南已針對 Windows 7 建立,但尚未更新較新版本的 Windows。 大部分指引仍適用原則,但簡報和範例不會反映我們目前的設計指導方針

設計良好的用戶帳戶控制體驗可協助防止不必要的全系統變更,其可預測且需要最少的努力。

完全啟用使用者帳戶控制(UAC)後,互動式系統管理員通常會以最少的使用者許可權執行,但他們可以自行提升許可權,以透過同意UI明確同意來執行系統管理工作。 這類系統管理工作包括安裝軟體和驅動程式、變更全系統設定、檢視或變更其他用戶帳戶,以及執行系統管理工具。

在最低許可權狀態中,系統管理員稱為受保護的系統管理員。 在提升許可權的狀態中,它們稱為提升許可權的系統管理員。 相較之下,標準用戶無法自行提高許可權,但可以要求系統管理員使用認證 UI 提高許可權。 內建系統管理員帳戶不需要提高許可權。

[允許程式] 安全性訊息的螢幕快照

同意UI,用來提升受保護的系統管理員具有系統管理許可權。

要求密碼螢幕快照

用來提升標準使用者的認證UI。

UAC 提供下列優點:

  • 它可減少以較高許可權執行的程式數目,因此有助於防止使用者意外變更其系統設定,並協助防止「惡意代碼」取得全系統存取權。 當提高許可權遭到拒絕時,惡意代碼只能影響目前用戶的數據。 如果沒有提高許可權,惡意代碼就無法進行全系統變更或影響其他使用者。
  • 對於 受控環境,設計良好的UAC體驗可讓使用者在以標準使用者身分執行時更有生產力,方法是移除不必要的限制。
  • 它可讓標準使用者要求系統管理員在目前會話內執行系統管理工作的許可權。
  • 針對家庭環境,它可讓家長更妥善地控制全系統變更,包括已安裝哪些軟體。

開發人員: 如需實作資訊,請參閱 重新設計您的UI以取得UAC相容性

在 Windows Vista 中,受保護的系統管理員可以選擇收到所有系統變更或無通知。 UAC 預設設定是通知所有變更,無論其來源為何。 當您收到通知時,您的桌面將會變暗,而且您必須核准或拒絕UAC對話框中的要求,才能在電腦上執行任何其他動作。 桌面變暗稱為 安全桌面,因為其他程式無法在變暗時執行。

除了 Windows Vista 中的兩個,Windows 7 還引進了兩個受保護系統管理員的中繼 UAC 設定。 第一個是只在程式進行變更時通知使用者,因此系統管理員在自行進行變更時會自動提升許可權。 這是 Windows 7 中的 UAC 預設設定,也會使用安全桌面。

Windows 7 中的第二個中繼設定與第一個設定相同,不同之處在於它不會使用安全桌面。

windows 7螢幕快照

Windows 7 引進兩個中繼 UAC 設定。

附注: 撰寫 程式代碼以支援使用者帳戶控制 的相關指導方針,請參閱另一篇文章。

設計概念

目標

設計良好的使用者帳戶控制體驗具有下列目標:

  • 排除不必要的提高許可權。 使用者應該必須提高許可權,才能執行需要系統管理許可權的工作。 所有其他工作都應該設計為消除提高許可權的需求。 舊版軟體通常需要系統管理員許可權,方法是寫入 HKLM 或 HKCR 登錄區段,或 Program Files 或 Windows 系統資料夾。
  • 可預測。 標準用戶必須知道哪些工作需要系統管理員在受控環境中執行或完全無法執行。 系統管理員必須知道哪些工作需要提高許可權。 如果他們無法準確預測提高許可權的需求,則當不應該時,他們更有可能同意系統管理工作。
  • 需要最少的心力。 需要系統管理許可權的工作應該設計成需要單一提升許可權。 需要多個提高許可權的工作很快就會變得乏味。
  • 還原為最低許可權。 一旦需要系統管理許可權的工作完成,程式應該會還原為最低許可權狀態。

提高許可權工作流程

當工作需要提高許可權時,其具有下列步驟:

  1. 進入點。 當 UAC 完全啟用時,需要立即提高許可權的工作具有以 UAC 盾牌標示的進入點。 在此情況下,用戶應該會在按兩下這類命令之後立即看到提高許可權UI,而且當他們看到沒有盾牌之工作的提高許可權UI時,他們應該特別小心。

    uac 盾牌圖示及其標籤的螢幕快照

    在此範例中,家長控制和用戶帳戶控制面板專案需要提高許可權。

    當UAC部分啟用或完全關閉時,仍會顯示UAC防護,以指出工作涉及系統層級變更,因此需要提高許可權,即使使用者可能看不到提高許可權UI也一樣。 一律針對需要提高許可權的工作顯示UAC防護,讓UI保持簡單且可預測的狀態。

  2. 海拔。 針對受保護的系統管理員,工作會使用同意 UI 要求同意。 針對標準使用者,工作會使用認證UI要求系統管理員認證。

    兩種高度

    這些範例顯示認證UI和同意UI。

  3. 個別提升許可權的程式。 在內部,會建立新的提升許可權進程來執行工作。

  4. 還原為最低許可權。 如有必要,請還原為最低許可權,以完成不需要提高許可權的任何步驟。

請注意,工作不會「記住」提升許可權的狀態。 例如,如果使用者在精靈中的提高許可權進入點來回巡覽,則使用者每次都必須提高許可權。

使用模式

用戶帳戶控制有數種使用模式(依喜好設定順序):

  1. 適用於標準使用者。 藉由將功能的範圍限制為目前使用者,以設計所有使用者的功能。 藉由將設定限制為目前使用者(而不是全系統),您可以完全免除提高許可權 UI 的需求,並讓使用者完成工作。

    不正確:

    訊息的螢幕快照:您沒有許可權

    在此範例中,Windows XP 用戶必須具有系統管理許可權,才能檢視或變更目前的時區。

    正確:

    日期和時間對話框的螢幕快照

    在此範例中,時區功能已在 Windows 7 和 Windows Vista 中重新設計,供所有使用者使用。

  2. 針對標準使用者和系統管理員,有個別的UI元素。 明確地將標準使用者工作與系統管理工作分開。 授與所有使用者對實用唯讀資訊的存取權。 使用UAC防護清楚識別系統管理工作。

    uac 盾牌 圖形,顯示需要提高許可權

    在此範例中,系統控制面板專案會向所有用戶顯示其狀態,但變更全系統設定需要提高許可權。

  3. 允許標準用戶嘗試工作,並在失敗時提高許可權。 如果標準使用者可以檢視資訊,而且能夠在沒有提高許可權的情況下進行一些變更,則允許他們存取UI,並只在工作失敗時提高許可權。 當標準使用者具有有限的存取權時,這個方法很適合使用,例如在 Windows 檔案總管中具有自己檔案的屬性。 它也適用於控制面板混合式中樞頁面上的設定。

    拒絕存取的螢幕快照訊息

    在此範例中,用戶嘗試變更程式檔屬性,但沒有足夠的許可權。 用戶可以提升許可權,然後再試一次。

  4. 僅適用於系統管理員。 只針對系統管理員功能和程式使用此方法! 如果功能僅供系統管理員使用(且沒有標準使用者的導覽路徑或有用的唯讀資訊),您可以在進入點提示系統管理員認證,再顯示任何UI。 當所有路徑都需要系統管理許可權時,請針對冗長的精靈和 頁面流程使用此方法

    如果整個程式僅供系統管理員使用,請將其標示為提示輸入系統管理員認證以啟動。 Windows 會以 UAC 盾牌重疊顯示這類程式圖示。

    windows 標誌和 uac 盾牌重疊 螢幕快照

    在此範例中,程式需要系統管理許可權才能啟動。

指引

UAC 防護圖示

  • 顯示具有UAC防護的控件,以指出當UAC完全啟用時,工作需要立即提高許可權, 即使UAC目前未完全啟用也一樣。 如果精靈和 頁面流程的所有路徑 需要提高許可權,請在工作的進入點顯示UAC防護。 適當地使用UAC防護可協助用戶預測何時需要提高許可權。

  • 如果您的程式支援多個版本的 Windows,如果至少一個版本需要提高許可權,請顯示 UAC 防護。 因為 Windows XP 永遠不需要提升許可權,所以如果您能夠一致且不損害效能,請考慮移除適用於 Windows XP 的 UAC 防護。

  • 請勿針對大部分內容中不需要提升許可權的工作顯示UAC防護。 由於這種方法有時會產生誤導,因此慣用的方法是改用適當受防護的內容命令。

    windows 檔案總管中相片檔案的 螢幕快照

    因為 [新增資料夾] 命令只有在系統資料夾中使用時才需要提高許可權,所以它會顯示沒有 UAC 防護。

  • UAC 盾牌可以顯示在下列控制器上:

    命令按鈕:

    使用 uac 盾牌圖示 命令按鈕的螢幕快照

    需要立即提高許可權的命令按鈕。

    命令連結:

    使用 uac 盾牌圖示 命令連結的螢幕快照

    需要立即提高許可權的命令連結。

    連結:

    uac shield 變更帳戶連結的螢幕快照

    需要立即提高許可權的連結。

    功能表:

    使用 uac 防護選單的螢幕快照

    需要立即提高許可權的下拉功能表。

  • 因為工作不記得提升狀態,不會變更 UAC 防護來反映狀態。

  • 即使用戶帳戶控制已關閉,或使用者正在使用內建系統管理員帳戶,仍會顯示 UAC 防護。 以一致的方式顯示UAC盾牌更容易進行程序設計,並提供使用者工作本質的相關信息。

海拔

  • 盡可能設計標準使用者執行的工作,而不需要提高許可權。 授與所有使用者對實用唯讀資訊的存取權。

  • 根據每個工作提高許可權,而不是以每個設定為基礎。 請勿在單一頁面或對話框中混合標準使用者設定與系統管理設定。 例如,如果標準使用者可以變更部分但並非所有設定,請將這些設定分割成個別的UI介面。

    不正確:

    日期和時間設定對話框的螢幕快照

    在此範例中,標準使用者設定與系統管理設定不正確地混合。

    正確:

    沒有 uac 盾牌螢幕快照

    在此範例中,變更日期和時間的設定位於不同的對話框中,僅適用於系統管理員。 時區設定可供標準使用者使用,且不會與系統管理設定混合。

  • 在判斷是否應該顯示或停用控件時,請勿考慮需要提高許可權。 這是因為:

    • 在非受控環境中,假設標準使用者可以透過要求系統管理員來提升許可權。 停用需要提高許可權的控件可防止使用者提高許可權。
    • 在受控環境中,假設標準使用者完全無法提升許可權。 拿掉需要提高許可權的控制項可防止使用者知道何時停止查看。
  • 若要消除不必要的提高許可權:

    • 如果工作可能需要提高許可權,請盡可能提高許可權。 如果工作需要 確認,則只有在使用者確認之後才會顯示提高許可權 UI。 如果工作一律需要提高許可權,請在進入點提高許可權。
    • 提高許可權之後,請保持提升,直到不再需要提高的許可權為止。 使用者不應該多次提高許可權,才能執行單一工作。
    • 如果用戶必須提高許可權才能進行變更,但選擇不進行任何變更,請保留啟用正認可按鈕,但將認可處理為取消。 如此一來,使用者就不需要提高許可權即可關閉視窗。
    • 不正確:
    • 只有一個按鈕使用中視窗的螢幕快照
    • 在此範例中,會停用 [儲存變更] 按鈕以避免不必要的提高許可權,但會在使用者變更選取專案時啟用。 不過,停用的認可按鈕看起來像使用者真的沒有選擇。
  • 當工作失敗時,請勿顯示錯誤訊息,因為用戶選擇不提高許可權。 假設使用者刻意選擇不繼續,因此不會將這種情況視為錯誤。

    不正確:

    訊息 螢幕快照:fabrikam 還原無法執行

    在此範例中,Fabrikam Restore 在使用者決定不提高許可權時,不正確地提供錯誤訊息。

  • 請勿顯示警告,以說明使用者可能需要提高其執行工作的許可權。 讓使用者自行探索此事實。

  • 根據下表顯示UAC防護和提高許可權UI:

    物件 情況 放置UAC防護的位置 提高許可權的時機
    程式
    整個程式僅適用於系統管理員。
    windows 標誌和 uac 盾牌重疊 螢幕快照
    程序圖示上的UAC防護覆疊。
    在啟動時顯示提高許可權UI。
    命令
    整個命令僅適用於系統管理員。
    變更帳戶連結和 uac 防護螢幕快照
    命令按鈕或連結上的UAC防護。
    按兩下命令按鈕或連結時顯示提高許可權 UI,但在任何確認之後。
    命令
    命令會顯示適合所有用戶的實用唯讀資訊,但變更需要系統管理許可權。
    變更設定連結和 uac 防護螢幕快照
    命令按鈕或連結上的UAC防護進行變更。
    按兩下命令按鈕時顯示提高許可權UI,但在任何確認之後。
    命令
    標準使用者可以檢視資訊,而且可能會進行一些變更,而不需要提高許可權。 允許標準用戶嘗試,並在失敗時提高許可權。
    重試按鈕上的 uac 圖示 螢幕快照
    請勿顯示命令的 UAC 防護,但如果命令失敗,則會針對提高許可權進入點顯示它。
    當使用者重試命令時顯示提高許可權UI。
    工作步驟
    所有後續步驟都需要提高許可權。
    使用 uac shield下一個命令按鈕的螢幕快照
    [下一步] 按鈕上的UAC盾牌(或對等專案)。
    按兩下 [下一步] 或其他認可按鈕時,顯示提高許可權UI。
    工作步驟
    某些分支需要提高許可權。
    使用 uac shield螢幕快照
    需要提高許可權之命令連結上的UAC防護。
    按兩下 UAC 防護的命令連結時,顯示提高許可權 UI。

提高許可權UI

  • 如果使用者提供無效的帳戶(名稱或密碼)或沒有系統管理員許可權,只要重新顯示認證 UI 即可。 不要顯示錯誤訊息。
  • 如果使用者取消認證 UI,請將使用者傳回原始 UI。 不要顯示錯誤訊息。
  • 如果使用者帳戶控制已關閉,且標準使用者嘗試執行需要提高許可權的工作,請提供錯誤訊息,指出「此工作需要系統管理員許可權。 若要執行這項工作,您必須使用系統管理員帳戶登入。

工作 螢幕快照需要許可權訊息

在此範例中,用戶帳戶控制已關閉,因此錯誤訊息會說明用戶必須使用系統管理員帳戶。

嚮導

  • 不要多次提高許可權。 提升精靈后,應該保持提升許可權。
  • 如果在精靈內執行工作,請在 [認可] 頁面的 [下一步] 按鈕上放置 UAC 盾牌(應該提供更 特定標籤)。 當用戶認可時:
    • 如果下一頁是 [進度] 頁面,請前進到該頁面,並強制顯示提高許可權 UI。 成功提高許可權之後,請執行工作。
    • 如果下一頁是 [完成] 頁面,請前進到該頁面(但暫時將其內容取代為「等待許可權...」),並強制顯示提高許可權 UI。 成功提高許可權之後,請執行工作,然後顯示 [完成] 頁面內容。
    • 如果使用者取消提高許可權 UI,請返回 [認可] 頁面。 這麼做可讓使用者再試一次。
  • 如果工作在精靈完成之後執行,請在 [認可] 頁面的 [完成] 按鈕上放置 UAC 盾牌(應提供更 特定標籤)。 當用戶認可時:
    • 保留在 [認可] 頁面上,並強制顯示提高許可權 UI。 成功提高許可權之後,請關閉精靈。
    • 如果使用者取消提高許可權 UI,請返回 [認可] 頁面。 這麼做可讓使用者再試一次。
  • 針對僅適用於系統管理員的冗長精靈,您可以在進入點提示系統管理員認證,再顯示任何UI。

發簡訊

  • 請勿使用省略號,因為命令需要提高許可權。 提高許可權的需求會以UAC盾牌表示。

文件

參考使用者帳戶控制時:

  • 將此功能稱為用戶帳戶控制(在第一次提及時)或 UAC(後續提及),而不是最低許可權的用戶帳戶或 LUA。
  • 將非系統管理員稱為標準使用者。
  • 將內建計算機管理員稱為內建系統管理員。

在使用者檔案中:

  • 請參閱授與同意以授與許可權來執行系統管理工作的動作。

在程式設計和其他技術檔中:

  • 請參閱同意以提升許可權方式執行系統管理工作的行為。
  • 在 UAC 的內容中,當未提高許可權時,將系統管理員稱為受保護的系統管理員,以及在提高許可權之後提升許可權的系統管理員。
  • 請參閱用來輸入密碼作為認證UI的對話框。 請參閱用來同意作為同意UI的對話框。 通常將這兩者稱為提高許可權UI。