用户帐户控制

来自 WinStory Wiki
跳转到导航 跳转到搜索
用户帐户控制
Microsoft Windows 的组件
文件:Win11UAC.png
Windows 11 中提示访问 Windows 终端的用户帐户控制
类型安全选项
推出于Windows Vista

用户帐户控制(User Account Control,UAC)是 Windows Vista 及以上版本中包含的一项安全功能,它将非强制性管理员应用程序限制为标准用户权限,除非明确授予它们管理员权限。

功能

在需要管理权限的任务上,系统会在 SYSTEM 帐户和名为 SSSecure_UAC_Background 的应用程序(用深色覆盖层覆盖桌面,亦被正式称为安全桌面,secure desktop)下初始化 consent.exe(显示 UAC 提示符)。然后,UAC 显示的同意提示将提供有关程序身份的基本信息,并在顶部显示表示程序安全性的通知:

  • 蓝色(在 Windows 11 中为白色) - 已经过签名的应用程序
  • 黄色 - 未经过签名的应用程序
  • 红色 - 管理员阻止或证书吊销的可执行文件(通常在 Windows 10 Build 14965.1001 及更高版本过期的情况下代码签名失效时发生)。

此外,如果当前用户没有管理员权限,它还会显示密码提示,要求管理员输入其凭证才能继续。这是授权程序以管理员权限(也被称为提权,elevation)运行的过程。

UAC 的早期实现(称为 UAP - User Account Protection,用户帐户保护)对管理员权限请求使用不同的关键字。与使用关键字 asInvoker 的现代实现不同,早期实现使用 requireAdministrator。这会导致无法在使用此实现的版本中运行现代程序,因为它们会产生运行时错误。可以修改程序的清单以使用较旧关键字来触发 UAP 提示符,从而允许程序正确运行。但是,执行完整性验证(如安装程序)的程序将不会运行,因为程序的校验和不再与验证它所依据的校验和匹配。

然后,通过在更高的完整性级别运行,将提升的进程与非提升的进程隔离开来,从而防止由较低级别的进程发起的大多数交互,避免权限提升攻击。

历史

Windows Longhorn/Vista

重置前

UAC 在 Build 3683 中首次作为 Windows Trust Manager(Windows 信任管理器)亮相,并且在整个 Milestone 3 和 4 中保持不变。实现相当原始:只有一个同意提示,带有一个显示程序风险的条。此外,此功能仅限于基于 Avalon 的应用程序。

Build 4015 引入了 Windows Trust Advisor,它是上述产品的后继者。当打开系统无法识别发布者的应用程序时,Trust Advisor 会警告用户此应用程序与其 Windows 信任设置严重冲突,他们不应继续。

此功能在后来的 Milestone 中销声匿迹,只是在最后一个重置前版本中通过另一个设计更改再次出现。

重置后

与 Longhorn 附带的其他功能非常相似,UAC 从开发重置版本中删除。它后来被重新包含在 Build 5048 中,尽管处于非常基本的状态,具有基本的同意提示,要求用户运行或不运行此程序。要启用它,请在注册表中设置以下值:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]
"LUAEnabled"=dword:00000001
"InstallerDetectionEnabled"=dword:00000001

之后,为管理员帐户设置密码并创建一个新的受限用户帐户并登录。

Windows Vista Build 5365.8 中,桌面窗口管理器效果现在默认处于禁用状态,并且当作为安全措施向用户显示 UAC 提示时,工作区会变暗。

后续版本会不断刷新用户帐户控制的界面,使其越来越接近其最终形式。此外,它被称为 User Account Protection(用户帐户保护,UAP),可以通过使用开始菜单快捷方式来启用或禁用 toggle.exe。后来,它被重命名为最终名称,设置程序现在被命名为 UserAccountControlSettings.exe

Windows 7

在收到许多关于 UAC 触发过于频繁的用户投诉后,Microsoft 在 Windows 7 中引入了更多的 UAC 设置。从那时起,不仅可以关闭和打开 UAC,还可以将其设置为在用户更改系统设置时不启动。UAC 始终使用 Basic 或经典主题,除非“不要在我的桌面上变暗(Do not dim at my desktop)”处于打开状态。

Windows 8 至 Windows 10

自 Windows 8 以来,用户帐户控制的唯一变化是 Windows 8 Build 8066,其中当提升提示触发时,桌面不再显示。否则,应用程序在整个 Windows 8Windows 10 Build 14322 中通常保持不变。

Windows 10 Build 14328 中,UAC 获得了基于 XAML 的重大更改,以符合 Windows 10 的新设计语言。但是,较旧的 UAC 对话框设计仍然存在,可以通过将以下值合并到注册表中来启用:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Authentication\LogonUI\TestHooks]
"XamlCredUIAvailable"=dword:00000000

注册表项调整后来在后续版本中被删除。

此外,在 Windows 10 Build 14342.rs1_release 中添加了此应用的深色主题。

Windows 11

用户帐户控制再次进行了设计更新,以匹配 Windows 11 中引入的新 Fluent 设计美学。

2024 更新通过引入 Sudo for Windows 在很大程度上改进了现有的用户帐户控制机制,Sudo for Windows 是一个直接受 Unix sudo 命令启发的开源命令行工具,允许用户以 root 超级用户身份运行其他程序。[1]尽管名称如此,但 Sudo for Windows 并不是基于其 Unix 对应物,而是用 Rust 编程语言从头开始编写的。由于 Windows 和 Unix 权限系统之间的差异,特别是缺少超级用户帐户,它的目标也不是与原始实现兼容。可以通过 sudo config --enable 命令启用它,也可以在设置应用中包含的开发者选项的切换中启用它。

Sudo for Windows 支持多种作模式,与未提升的进程具有不同级别的隔离。新窗口模式仅触发给定命令的用户帐户控制提示并退出。input disabled 和 inline 模式的工作原理是运行 Sudo 本身的第二个提升实例,此实例运行给定的命令,并通过远程过程调用将其标准流(如果在输入禁用模式下运行,则不包括标准输入流)重定向到原始的未提升实例。

Build 27718 中,提权提示已略有更改。在 Build 27754 中,提示略微更新,标题和应用名称以粗体显示,并进行了细微的填充和按钮大小调整。

图库

Windows Vista

重置前

重置后及更晚

Windows 7 至 10

旧设计

新设计

Windows 11

引用资料

  1. Jordi Adoumie. Introducing Sudo for Windows!(宣布推出适用于 Windows 的 Sudo!), Windows Command Line. 2024 年 2 月 8 日. 检索于 2024 年 2 月 9 日.