System32文件夹中是否存在用于Windows UAC功能的二进制文件(.exe)?(例如uac.exe
)。如果强行删除该文件会怎样?Windows会中断还是无法启动?
这里没有XY问题。我只是很好奇,如果强行从PC上卸下UAC,会发生什么。
System32文件夹中是否存在用于Windows UAC功能的二进制文件(.exe)?(例如uac.exe
)。如果强行删除该文件会怎样?Windows会中断还是无法启动?
这里没有XY问题。我只是很好奇,如果强行从PC上卸下UAC,会发生什么。
Answers:
用户帐户控制(UAC)是指一起构成UAC体系结构的几个组件。我将简要回顾其中的一些内容以及负责实现这些内容的二进制文件,但首先,这是Microsoft Docs文章“用户帐户控制的工作原理”中的UAC体系结构概述:
从概念上讲,UAC的“第一个”组件由本地安全机构子系统实现,该子系统负责在登录过程中创建用户的访问令牌。从Windows Vista开始,修改了登录过程,以便当管理员在启用UAC的情况下登录时,LSA子系统为用户生成两个单独的访问令牌:
如下所示,此过程不同于标准用户登录的过程:
LSA子系统服务存在于该lsass.exe
过程中。
Windows 7中添加了“文件和注册表虚拟化”,它是UAC的一个组件,可填充不符合UAC的旧应用程序,但仅需要管理权限才能访问文件系统或注册表的某些受保护区域:
当不符合UAC的管理应用程序尝试写入受保护的目录(如“程序文件”)时,UAC会为该应用程序提供它自己尝试更改的资源的虚拟视图。虚拟副本保留在用户的配置文件中。
通过将这些访问尝试重定向到不需要管理员权限的区域,即使在系统上启用了UAC,这些应用程序仍可以继续运行。
这种虚拟化是在内核中实现的。
应用程序信息服务(AIS)读取应用程序的清单,并与UAC同意提示一起确定是否允许应用程序以提升的权限执行(即,在登录时创建的未经过滤的管理级访问令牌的上下文中启动) 。这篇博客文章很好地概述了其在UAC流程中的作用:
AIS以附加的管理权限促进交互式应用程序的运行。如果该服务停止,则用户将无法使用他们可能需要的其他管理特权来启动应用程序。...外壳程序在启动应用程序时会检查该服务。AIS是读取清单和具有对'requestedExecutionLevel'要求的'trustInfo'xml节的...
以下是上面引用的图形,详细说明了AIS在UAC同意提示过程中的作用:
AIS 在由执行的DLLappinfo.dll
中实现svchost.exe
。
@BenN的答案解释了(著名的)UAC同意提示中的关键作用。这是在其中实现的,consent.exe
并负责获得用户的同意或管理用户的凭据,以便允许启动需要管理员权限的应用程序。
默认情况下,安全桌面是显示UAC同意提示的位置。Microsoft的UACBlog告诉我们此桌面与用户桌面相比有何独特之处:
由于登录UI在安全桌面上运行,因此您最常在登录Windows时与[安全桌面]进行交互。Secure Desktop与User Desktop的主要区别在于,仅允许以SYSTEM身份运行的受信任进程在此处运行(即,没有以User特权级别运行的进程),并且还必须通过以下方式信任从User Desktop到Secure Desktop的路径:整个链。
当征求用户的同意以提升的权限运行应用程序时使用它的想法是,除非恶意软件已经拥有管理权限,否则它无法模仿安全桌面,在这种情况下,欺骗用户授予它们是没有意义的。
UAC体系结构的其他方面未在此处介绍,但这应为以下事实提供足够的证据:
自从它在Windows Vista中引入以来,它已被深度集成到操作系统的关键部分,从而使其不可行地删除了负责UAC的所有代码,而又不会破坏其他东西(例如您的登录能力!)。
我认为可以肯定地说,如果“强制删除” UAC,则会破坏Windows。
正如Twisty出色地解释的那样,有许多组件可以帮助实现UAC。人们最熟悉的UAC部分是“海拔/同意”对话框:
这由consent.exe
“管理应用程序的同意UI” 提供。我尝试在VM中重命名它,然后看看会发生什么。不出所料,当使用“以管理员身份运行”时,没有提升提示出现-而是,您得到了一个文件未找到的错误,该错误归咎于您试图提升的东西:
即使使用管理员身份登录,尝试使用任何需要升高的控制面板UI元素(即具有屏蔽图标)也会失败,并出现类似错误。尝试从“开始”菜单启动管理内容会产生稍微不同的错误:
根据进行重命名时会破坏所有内容的ACL设置,可能无法从OS内修复此问题,因为文件操作可能需要提升(即使它们通常不产生同意对话框)。但是,类似于普通用户的活动似乎并未降低。