UAC (User Account Control) 自 Windows Vista 引入至今,仍被許多用戶視為「煩人的彈窗」而選擇關閉。實則 UAC 是 Windows 強制執行最小權限原則、阻擋惡意軟體靜默提權的關鍵防線。本文解析 UAC 運作機制、四個通知等級差異、安全關閉前提、企業部署最佳實踐。
管理員登入時,Windows 產生兩個存取權杖:
• 完整權杖:含 Administrators 群組 SID、所有特權,僅在用戶同意提權 (點擊「是」/輸入密碼) 時授予進程。
• 已篩選權杖:移除 Administrators SID、高風險特權,視為標準使用者權杖,啟動器 (explorer.exe) 及其子進程預設使用此權杖。
檔案/註冊表虛擬化: 標準權杖進程嘗試寫入受保護區域 (Program Files, HKLM\Software) 時,系統透明重導向至使用者私有虛擬存儲 (%LocalAppData%\VirtualStore, HKCU\Software\Classes\VirtualStore),避免舊版應用崩潰同時保護系統完整性。
| 等級 | 描述 | 提權提示 | 安全性 | 適用場景 |
|---|---|---|---|---|
| 永遠通知 (預設) | 程式嘗試變更電腦設定、使用者變更 Windows 設定 | 安全桌面變暗,模態對話框,必須回應 | 最高 | 個人電腦、企業標準桌面 |
| 僅在我執行程式時通知 | 不提示 Windows 設定變更,僅提示非簽名/非受信程式提權 | 同安全桌面 | 中高 | 資深使用者、開發環境 |
| 僅通知不變暗桌面 | 同上,但不切換安全桌面 | 普通視窗,可被其他視窗遮蓋/自動化點擊 | 中 (有 UI 欺騙風險) | 特定相容性需求 |
| 從不通知 (關閉 UAC) | 管理員直接獲得完整權杖,標準用戶無法提權 | 無 | 低 (等同 XP 時代) | 嵌入式/自動化測試/舊應用強相依 (需補償控制) |
若業務必須關閉 UAC (等級 4),必須同時滿足以下條件,否則嚴禁關閉:
驗證: 關閉 UAC 後執行 whoami /priv,確認 SeAssignPrimaryTokenPrivilege, SeDebugPrivilege 等高危特權處於啟用狀態,評估風險可接受性。
電腦設定 → Windows 設定 → 安全性設定 → 本機原則 → 安全性選項
• "User Account Control: Admin Approval Mode for the Built-in Administrator account" = Enabled (內建 Administrator 也受 UAC 管制)
• "User Account Control: Behavior of the elevation prompt for administrators in Admin Approval Mode" = Prompt for consent (等級 1/2)
• "User Account Control: Detect application installations and prompt for elevation" = Enabled
• "User Account Control: Run all administrators in Admin Approval Mode" = Enabled
• "User Account Control: Only elevate UIAccess applications that are installed in secure locations" = Enabled
• "User Account Control: Switch to the secure desktop when prompting for elevation" = Enabled (強制安全桌面)
<requestedExecutionLevel level="requireAdministrator" uiAccess="false" />,系統自動提示提權。Start-Process powershell -Verb RunAs。UAC 不是敵人,是守門員。正確配置等級、搭配應用程式控制與端點防護,才能在易用性與安全性間取得最佳平衡。除非有極其特殊的補償控制,否則請保持 UAC 啟用 (至少等級 2)。