使用者帳戶控制
注意
此設計指南是針對 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 引進了兩個中繼 UAC 設定。
注意: 撰寫 程式碼以支援使用者帳戶控制 的相關指導方針會以個別文章呈現。
設計概念
目標
設計良好的使用者帳戶控制體驗具有下列目標:
- 消除不必要的提高許可權。 使用者應該必須提高許可權,才能執行需要系統管理許可權的工作。 所有其他工作都應該設計為消除提高許可權的需求。 舊版軟體通常需要不必要的系統管理員許可權,方法是寫入 HKLM 或 HKCR 登錄區段或 Program Files 或 Windows 系統資料夾。
- 可預測。 標準使用者必須知道哪些工作需要系統管理員執行,或完全無法在 Managed 環境中執行。 系統管理員必須知道哪些工作需要提高許可權。 如果他們無法正確預測提高許可權的需求,他們更可能同意不應該執行系統管理工作。
- 需要最少的心力。 需要系統管理許可權的工作應該設計成需要單一提高許可權。 需要多個提高許可權的工作很快就會變得繁瑣。
- 還原為最低許可權。 一旦完成需要系統管理許可權的工作之後,程式應該會還原為最低許可權狀態。
提高許可權工作流程
當工作需要提高許可權時,其具有下列步驟:
進入點。 當啟用 UAC 時,需要立即提高許可權的工作,都會有標示為 UAC 防護的進入點。 在此情況下,使用者應該會在按一下這類命令之後立即看到提高許可權 UI,而且當使用者看到沒有防護線之工作的提高許可權 UI 時,應該特別小心。
在此範例中,家長監護和使用者帳戶控制台專案需要提高許可權。
當 UAC 部分啟用或完全關閉時,仍會顯示 UAC 防護,指出工作涉及系統層級變更,因此需要提高許可權,即使使用者可能看不到提高許可權 UI 也一樣。 一律針對需要提高許可權的工作顯示 UAC 防護,讓 UI 保持簡單且可預測的狀態。
海拔。 針對 [受保護的系統管理員],工作會使用同意 UI 要求同意。 針對標準使用者,工作會使用認證 UI 要求系統管理員認證。
這些範例會顯示認證 UI 和同意 UI。
個別提升許可權的進程。 在內部,會建立新的提升許可權的進程來執行工作。
還原為最低許可權。 如有必要,請還原為最低許可權,以完成不需要提高許可權的任何步驟。
請注意,工作不會「記住」提升許可權的狀態。 例如,如果使用者在精靈中的提高許可權進入點上來回巡覽,則使用者每次都必須提高許可權。
使用模式
使用者帳戶控制有數種使用模式, (喜好設定) :
適用于標準使用者。 將功能的範圍限制為目前使用者,以設計所有使用者的功能。 藉由將設定限制為目前的使用者 (,而不是全系統) ,您可以完全免除提高許可權 UI 的需求,並讓使用者完成工作。
不正確:
在此範例中,Windows XP 使用者必須具有系統管理許可權,才能檢視或變更目前的時區。
正確:
在此範例中,時區功能已在 Windows 7 和 Windows Vista 中重新設計,讓所有使用者都能運作。
具有標準使用者和系統管理員的個別 UI 元素。 明確地將標準使用者工作與系統管理工作分開。 授與所有使用者存取有用的唯讀資訊。 使用 UAC 防護明確識別系統管理工作。
在此範例中,系統控制台專案會向所有使用者顯示其狀態,但變更全系統設定需要提高許可權。
允許標準使用者嘗試工作,並在失敗時提高許可權。 如果標準使用者可以檢視資訊,而且能夠在不提高許可權的情況下進行一些變更,則允許他們存取 UI,而且只有在工作失敗時才會提高許可權。 當標準使用者具有有限的存取權時,例如在 Windows 檔案總管中具有自己檔案的屬性時,這個方法很適合。 它也適用于主控台混合式中樞頁面上的設定。
在此範例中,使用者嘗試變更程式檔屬性,但沒有足夠的許可權。 使用者可以提高許可權,然後再試一次。
僅適用于系統管理員。 僅針對系統管理員功能和程式使用此方法! 如果功能僅供系統管理員 (使用,且沒有標準使用者) 的導覽路徑或有用的唯讀資訊,您可以在進入點提示系統管理員認證,再顯示任何 UI。 當所有路徑都需要系統管理許可權時,請針對冗長的精靈和 頁面流程 使用此方法。
如果整個程式僅供系統管理員使用,請將其標示為提示輸入系統管理員認證,以啟動。 Windows 會以 UAC 防護覆迭顯示這類程式圖示。
在此範例中,程式需要系統管理許可權才能啟動。
指導方針
UAC 防護圖示
使用 UAC 防護顯示控制項,指出當 UAC 完全啟用時,工作需要立即提高許可權, 即使 UAC 目前未完全啟用也一樣。 如果精靈和 頁面流程 的所有路徑都需要提高許可權,請在工作的進入點顯示 UAC 防護。 正確使用 UAC 防護板可協助使用者預測何時需要提高許可權。
如果您的程式支援多個版本的 Windows,如果至少一個版本需要提高許可權,則顯示 UAC 防護。 由於 Windows XP 永遠不需要提高許可權,因此您可以一致且不損害效能,請考慮移除適用于 Windows XP 的 UAC 防護。
請勿針對在大部分內容中不需要提高許可權的工作顯示 UAC 防護。 因為這種方法有時會產生誤導,所以慣用的方法是改為使用適當受防護的內容命令。
因為 [新增資料夾] 命令只有在系統資料夾中使用時才需要提高許可權,所以不會顯示 UAC 防護。
UAC 防護板可以顯示在下列控制項上:
命令按鈕:
需要立即提高許可權的命令按鈕。
命令連結:
需要立即提高許可權的命令連結。
連結:
需要立即提高許可權的連結。
功能表:
需要立即提高許可權的下拉式功能表。
因為工作不會記住提高許可權的狀態, 所以請勿變更 UAC 防護來反映狀態。
即使使用者帳戶控制已關閉,或使用者正在使用內建系統管理員帳戶,仍會顯示 UAC 防護。 一致地顯示 UAC 防護板更容易進行程式設計,並提供使用者工作本質的相關資訊。
Elevation
可能的話,請設計標準使用者不提高許可權所要執行的工作。 授與所有使用者存取有用的唯讀資訊。
依工作提高許可權,而不是以每個設定為基礎。 請勿在單一頁面或對話方塊中混用標準使用者設定與系統管理設定。 例如,如果標準使用者可以變更部分但並非所有設定,請將這些設定分割為個別的 UI 介面。
不正確:
在此範例中,標準使用者設定與系統管理設定不正確地混合。
正確:
在此範例中,變更日期和時間的設定位於個別的對話方塊中,僅供系統管理員使用。 時區設定可供標準使用者使用,且不會與系統管理設定混合。
在判斷是否應該顯示或停用控制項時,請勿考慮需要提高許可權。 原因:
- 在非受控環境中,假設標準使用者可以要求系統管理員提高許可權。 停用需要提高許可權的控制項可防止使用者提高許可權。
- 在受控環境中,假設標準使用者完全無法提高許可權。 移除需要提高許可權的控制項可防止使用者知道何時停止查看。
若要消除不必要的提高許可權:
- 如果工作可能需要提高許可權,請儘快提高許可權。 如果工作需要 確認,只有在使用者確認之後,才會顯示提高許可權 UI。 如果工作一律需要提高許可權,請在進入點提高許可權。
- 提高許可權之後,請保持提高許可權,直到不再需要提高的許可權為止。 使用者不應該多次提高許可權,才能執行單一工作。
- 如果使用者必須提高許可權才能進行變更,但選擇不進行任何變更,請讓正認可按鈕保持啟用狀態,但將認可視為取消處理。 這麼做可消除使用者只需要提高許可權即可關閉視窗。
- 不正確:
- 在此範例中,會停用 [儲存變更] 按鈕以避免不必要的提高許可權,但會在使用者變更選取專案時啟用。 不過,已停用的認可按鈕看起來像使用者沒有選擇。
工作失敗時,請勿顯示錯誤訊息,因為使用者選擇不要提高許可權。 假設使用者刻意選擇不繼續,因此不會將此情況視為錯誤。
不正確:
在此範例中,Fabrikam Restore 在使用者決定不提高許可權時,不正確地提供錯誤訊息。
不要顯示警告,以說明使用者可能需要提高其執行工作的許可權。 讓使用者自行探索這項事實。
根據下表顯示 UAC 防護和提高許可權 UI:
Object 情況 放置 UAC 防護的位置 提高許可權的時機 程式 整個程式僅適用于系統管理員。
程式圖示上的 UAC 防護覆迭。在啟動時顯示提高許可權 UI。 命令 整個命令僅適用于系統管理員。
命令按鈕或連結上的 UAC 防護。按一下命令按鈕或連結時顯示提高許可權 UI,但在任何確認之後。 命令 命令會顯示適合所有使用者的實用唯讀資訊,但變更需要系統管理許可權。
命令按鈕上的 UAC 防護或連結以進行變更。按一下命令按鈕時顯示提高許可權 UI,但在任何確認之後。 命令 標準使用者可以檢視資訊,而且可能在沒有提高許可權的情況下進行一些變更。 允許標準使用者嘗試,並在失敗時提高許可權。
請勿顯示命令的 UAC 防護,但如果命令失敗,則會針對提高許可權進入點顯示它。當使用者重試命令時顯示提高許可權 UI。 工作步驟 所有後續步驟都需要提高許可權。
[下一步] 按鈕上的 UAC 防護 (或對等) 。按一下 [下一步] 或其他認可按鈕時,顯示提高許可權 UI。 工作步驟 某些分支需要提高許可權。
需要提高許可權之命令連結上的 UAC 防護。按一下具有 UAC 防護的命令連結時,顯示提高許可權 UI。
提高許可權 UI
- 如果使用者提供不正確帳戶 (名稱或密碼) 或沒有系統管理員許可權,只要重新顯示認證 UI 即可。 不要顯示錯誤訊息。
- 如果使用者取消認證 UI,請將使用者傳回原始 UI。 不要顯示錯誤訊息。
- 如果使用者帳戶控制已關閉,而標準使用者嘗試執行需要提高許可權的工作,請提供錯誤訊息,指出「此工作需要系統管理員許可權。 若要執行這項工作,您必須使用系統管理員帳戶登入。」
在此範例中,使用者帳戶控制已關閉,因此有錯誤訊息說明使用者必須使用系統管理員帳戶。
精靈
- 不要多次提高許可權。 一旦提升精靈,它應該會保持提高許可權。
- 如果在精靈內執行工作,請在 [認可] 頁面的 [下一步] 按鈕上放置 UAC 防護 (,這應該提供更 明確的標籤) 。 當使用者認可時:
- 如果下一頁是 [進度] 頁面,請前進到該頁面,然後強制顯示提高許可權 UI。 成功提高許可權之後,請執行工作。
- 如果下一頁是 [完成] 頁面,請前進到該頁面 (,但暫時將其內容取代為「等候許可權...」) ,並強制顯示提高許可權 UI。 成功提高許可權之後,請執行工作,然後顯示 [完成] 頁面內容。
- 如果使用者取消提高許可權 UI,請返回 [認可] 頁面。 這麼做可讓使用者再試一次。
- 如果在精靈完成之後執行工作,請在 [認可] 頁面的 [完成] 按鈕上放置 UAC 防護 (,這應該提供更 明確的標籤) 。 當使用者認可時:
- 保留在 [認可] 頁面上,並強制顯示提高許可權 UI。 成功提高許可權之後,請關閉精靈。
- 如果使用者取消提高許可權 UI,請返回 [認可] 頁面。 這麼做可讓使用者再試一次。
- 針對僅適用于系統管理員的冗長精靈,您可以在進入點提示系統管理員認證,再顯示任何 UI。
Text
- 請勿只使用省略號,因為命令需要提高許可權。 提高許可權的需求會以 UAC 防護來指出。
文件
參考使用者帳戶控制時:
- 請參閱在後續提及) ) 或 UAC (時,將此功能稱為使用者帳戶控制 (,而非最低許可權的使用者帳戶或 LUA。
- 以標準使用者身分參照非系統管理員。
- 以內建系統管理員身分參考內建電腦系統管理員。
在使用者檔中:
- 請參閱授與同意以授與許可權來執行系統管理工作的動作。
在程式設計和其他技術檔中:
- 請參閱授與同意以提高許可權來執行系統管理工作的動作。
- 在 UAC 的內容中,當提高許可權時,將系統管理員稱為受保護的系統管理員,並在提高許可權之後將系統管理員稱為[提高許可權] 。
- 請參閱用來輸入密碼作為認證 UI 的對話方塊。 請參閱用來以同意 UI 表示同意的對話方塊。 這兩者通常稱為提高許可權 UI。