深入了解Windows Vista用户帐户控制
深入了解Windows Vista用户帐户控制
UAC 的目标
UAC 旨在使用户能够使用标准用户权限(而不是管理权限)运行。管理权限使用户能够读取和修改操作系统的任何部份,包括其他用户的代码和数据 — 甚至是 Windows® 本身。如果没有管理权限,用户不会意外(或有意)修改系统设置,恶意软件无法改变系统安全设置或禁用防病毒软件,用户也不会危及共享计算机上其他用户敏感信息的安全。因此,使用标准用户权限运行可以减少企业环境中紧急咨询台呼叫的次数,减轻恶意软件的影响,使家庭计算机的运行更顺畅,并保护共享计算机上的敏感数据。
要使通过标准用户帐户运行切实可行,UAC 必须要解决几个问题。首先,在 Windows Vista™ 之前,Windows 使用模型一直是某种假定的管理权限。软件开发人员假定他们的程序可以访问和修改任何文件、注册表或操作系统设置。甚至当 Windows NT® 引入了安全性并区分了授予管理用户帐户和标准用户帐户的权限后,仍指导用户完成一个设置过程,使他们能够使用内置的 Administrator 帐户或 Administrators 组的成员帐户。
UAC 必须解决的第二个问题是用户有时需要管理权限来执行某些操作,如安装软件、更改系统时间以及在防火墙中打开端口。
UAC 针对这些问题的解决方案是使用标准用户权限运行大多数应用程序,始终避免对管理员权限的需要,并鼓励软件开发人员创建使用标准用户权限运行的应用程序。UAC 通过以下方式来实现这些方面:减少对管理权限的需求频率,使旧应用程序能够使用标准用户权限运行,使标准用户在需要时能够方便地访问管理权限,甚至使管理用户像标准用户那样运行。
作为标准用户运行
在 Windows Vista 的开发过程中,通过对所有管理操作的全面审核,确定了许多可以为标准用户启用而不会有损系统安全性的操作。例如,即使是为其 Windows XP 桌面系统采用了标准用户帐户的企业也无法从 Administrators 组中删除其移动用户,唯一的原因是 Windows XP 并不区分更改时区与更改系统时间之间的差别。如果便携式计算机用户希望配置本地时区以便旅行时能够在其日历中正确显示预约时间,他们必须具有“更改系统时间”特权(在内部称为 SeSystemTimePrivilege),在默认情况下该特权仅授予管理员。
安全协议(如 Kerberos)中通常会使用时间,但是时区仅影响时间的显示方式,因此 Windows Vista 添加了一个新特权“更改时区”(SeTimeZonePrivilege),并将其分配给 Users 组,如图 1 所示。这样许多企业便有可能使其便携式计算机用户在标准用户帐户下运行。
图 1 “更改时区”特权
Windows Vista 还允许标准用户在连接到无线网络时配置 WEP 设置、创建 VPN 连接、更改电源管理设置以及安装重要 Windows 更新。此外,它还引入了“组策略”设置,使标准用户能够安装 IT 管理员批准的打印机和其他设备驱动程序,以及从管理员批准的站点安装 ActiveX® 控件。
对于不能以标准用户帐户正确运行的客户和业务线 (LOB) 应用程序该如何处理?虽然某些软件确实需要管理权限,但许多程序都毫无必要地将用户数据存储在系统全局位置。Microsoft 建议希望使用管理权限来运行的全局应用程序安装程序在 %ProgramFiles% 目录下创建一个目录来存储应用程序的可执行文件和辅助数据,并在 HKEY_LOCAL_MACHINE\Software 下为其应用程序设置创建一个注册表项。当执行某个应用程序时,它可以使用不同的用户帐户运行,因此它应当在针对每个用户的 %AppData% 目录中存储用户特定数据,并在 HKEY_CURRENT_USER\ Software 下的用户注册表配置文件中保存每个用户的设置。标准用户帐户不具备 %ProgramFiles% 目录或 HKEY_LOCAL_MACHINE\Software 的写访问权限,但是因为多数 Windows 系统都是单用户的,并且在 Windows Vista 之前多数用户都是管理员,所以错误地将用户数据和设置保存到这些位置的应用程序仍能工作。
通过文件系统和注册表命名空间虚拟化的帮助,Windows Vista 使这些旧应用程序能够在标准用户帐户下运行。当应用程序修改文件系统或注册表中的系统全局位置并且该操作由于访问被拒绝而失败时,Windows 会将该操作重定向到特定于用户的区域;当应用程序从某个系统全局位置读取时,Windows 将首先检查每个用户区域中的数据,如果数据不存在,则允许从该全局位置进行读取尝试。
针对此虚拟化目的,如果某个进程是 32 位的(与 64 位相对)、不是使用管理权限运行,并且没有指令清单文件表明它是为 Windows Vista 编写的,那么 Windows Vista 会将其视为旧进程。根据此定义,对于任何操作(包括网络文件共享访问),如果它不是源于分类为旧进程的进程,则不会将其虚拟化。进程的虚拟化状态存储为其令牌中的一个标志,它是跟踪进程安全环境的内核数据结构,包括其用户帐户、组成员身份和特权。
您可以通过向“任务管理器”的“进程”页添加“虚拟化”栏来查看进程的虚拟化状态。
图 2 显示大多数 Windows Vista 组件(包括桌面窗口管理器 (Dwm .exe)、客户端服务器运行时子系统 (Csrss.exe) 和资源管理器)或者因为它们有 Windows Vista 指令清单而禁用了虚拟化,或者是使用管理权限运行而因此不允许虚拟化。Internet Explorer® (iexplore.exe) 启用了虚拟化,因为它可以承载多个 ActiveX 控件和脚本,并且必须假定它们没有编写为使用标准用户权限即可正确操作。
为旧进程虚拟化的文件系统位置为 %ProgramFiles%、%ProgramData% 和 %SystemRoot%,其中不包括某些特定子目录。但是,任何具有可执行文件扩展名的文件(包括 .exe、.bat、.scr、.vbs 等等)都将从虚拟化中排除。这意味着,使用标准用户帐户进行自我更新的程序将失败,而不会创建对于运行全局更新程序的管理员不可见的专有可执行文件版本。要向排除列表中添加其他扩展名,请在以下注册表项中输入它们并重新启动:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Luafv\Parameters\ExcludedExtensionsAdd
使用一种多字符串类型来分隔多个扩展名,并且不要在扩展名中包含前导点。
旧进程对虚拟化目录的修改将重定向到用户的虚拟根目录 %LocalAppData%\VirtualStore。例如,如果我的系统上运行的某个虚拟化进程要创建 C:\Windows\Application.ini,那么它实际创建的文件为 C:\Users\Markruss\AppData\Local\VirtualStore\Windows\Application.ini。该路径的本地部分表明这样一个事实,即当帐户具有漫游配置文件时,虚拟化文件不会随配置文件的其余部分漫游。
如果在资源管理器中导航到一个包含虚拟化文件的目录,资源管理器将在其工具栏中显示一个标记为“兼容性文件”的按钮,如图 3 所示。单击该按钮可导航至对应的 VirtualStore 子目录以显示虚拟化文件。
图 3 “兼容性文件”按钮指明了附近的虚拟化文件 更多电脑、家电软硬件维修资讯请访问维修技术













文章评论
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面