我们安装软件、修改设置……它都会弹出一个窗口,让我们确定是不是要这样做。
![ef0595f78d438a21c6cf7cd94d43352b.png](https://i-blog.csdnimg.cn/blog_migrate/58ceddef5df87faae3b9a9b01dd1c11a.jpeg)
但是对于一些人来说这个弹窗和脱了裤子放屁没什么两样,因为大多数弹窗都是在用户主动操作(安装软件,修改设置)的情况下进行的,多一个弹窗只是多了确认的步骤,徒增干扰。
所以很多人在进入新系统后会第一时间关掉这个提醒,以前七号也是这样,但如果你了解UAC的运作机制和带来的安全性,可能会重新考虑打开它。
01、用户账户与权限
Windows XP 是第一个引入不同账户不同权限的Windows操作系统,但默认使用系统管理员账户(最高权限)登录,这也导致一旦账户遭到入侵,病毒就可以在系统里畅通无阻。
从Vista开始微软引入了 UAC(用户账户控制),其目的是「用标准权限完成所有操作」。
都知道现在Windows中有不同的账户对应不同的管理权限:
![30cf2ee99d778d174d7f68c49bb68b09.png](https://i-blog.csdnimg.cn/blog_migrate/584970180107a618a6fafbaac84a3bcb.jpeg)
开启UAC后,程序默认以Users的权限级别运行(哪怕登录管理员账户),在程序试图修改系统设置,文件,注册表等等时,就会弹出提示框请求管理员级别的权限,类似MAC中的需要输入密码操作。在Vista时代,UAC只有两个选项,开启或关闭,到了Windows 7后UAC拥有了自己的设置界面和4个通知档位,并一直延续至今。
![058f871d250db59979ce90c6a0872aa4.png](https://i-blog.csdnimg.cn/blog_migrate/8f4be23dd5ba0039cf914a2adbe8df20.jpeg)
02、不止一个弹窗
在资源管理器中,不同权限级别的进程是隔离的。如果一个程序在运行过程中申请高级别权限,哪怕用户同意,它也不能直接获得权限,这么做是为了避免恶意程序诱导用户,甚至绕过UAC获取权限。无论程序怎么做,因为不同权限隔离,想到管理员权限组的进程必须自杀重启,新的进程才能以管理员权限运行,而所有新开的进程,资源管理器都会验证它的权限级别,如果是管理员级别权限则会需要用户同意。
![d2feb6bbe26b75a1bda8f7e5fc18ae41.png](https://i-blog.csdnimg.cn/blog_migrate/656c47b642f8b7092c2b2cbe173e1f99.jpeg)
03、UAC虚拟化
UAC刚问世的时候因为频繁弹窗的问题,被许多用户埋怨,微软为了推进UAC的使用率,引入了UAC虚拟化。
![fd6f2760c9ac34e5279e4cbbd546c8c2.png](https://i-blog.csdnimg.cn/blog_migrate/e51e29a4dbfa7a5f26a0bd4fa00275aa.jpeg)
有很多程序运行时候只需要写入HKLM或Windows目录,而不加载驱动,Windows检测到这种程序后,便会启用UAC虚拟化。
程序对注册表HKLM里的修改将虚拟化到HKCR中的一个项,需要写到Windows目录的内容虚拟化到Appdata目录中。
这样做既减少了UAC弹窗的次数,也提升了系统的安全性(避免其他程序通过DLL注入等方法获得管理员权限甚至System权限)。
04、标准账户足以
刚才说过第一次登录Windows时创建的是一个管理员账户,实际上对于小白或数据安全要求高的用户,标准账户足以。不管在那种账户下登录,程序都以Users标准权限运行。在管理员账户下运行的程序需要提升权限时,会直接申请,用户作为管理员直接给权限。
在标准账户下运行的程序需要提升权限时,因为标准账户中不具备管理员权限,所以必须输入管理员账户密码才能继续。
![d422c313ed8390033ebc5ee0178418ba.png](https://i-blog.csdnimg.cn/blog_migrate/ffe97d31d43ad714ff2f87620ea45ff6.jpeg)
这就避免了程序绕过UAC获得管理员权限,特别是国产全家桶静默安装。因为标准账户中根本没有管理员权限。
05、4个档位的区别
前面提到Windows 7开始的UAC通知有四个档位,第三档是Windows默认的,但是七号推荐大家使用第四档“始终提醒”。
![00b4bece46817450953ac7472ac9f6b9.png](https://i-blog.csdnimg.cn/blog_migrate/7216d0c73570d061c39bf5be701da9cb.jpeg)
前面也说过一些程序会绕过UAC来达到提权的目的,其实这是Windows允许的静默提权行为,目的还是为了较少弹窗,避免用户反感。但也相当于留了一个后门,让恶意程序有了可趁之机。
而“始终通知”可以避免掉静默提权行为,所有涉及管理员权限的行为都将弹窗。
中间两档在通知数量上没有差别,他们取消了以下行为的弹窗:
在控制面板里的管理操作时不弹窗;在 Windows 资源管理器内部操作时不弹窗(启动子进程依然需要);
打开任务管理器时不弹窗;
更改防火墙设置时不弹窗;
打开 UAC 设置界面时不弹窗。中间两档的区别是:第三档弹窗界面背景为黑色,此时所有进程暂停,等待用户操作后才能继续运行,避免恶意程序控制鼠标自行获取管理员权限(常在用户未使用计算机的情况下)。
![33b7b435a683fd37a6179ddd44dbcabf.png](https://i-blog.csdnimg.cn/blog_migrate/efdebb0481d3d56f9648b9b2d5ab8eeb.jpeg)
此界面截图程序也被暂停,只能拍照。
而第二档只是弹窗,背景就是原来的操作界面,只有申请权限的程序被暂停,其他程序照旧运行(存在帮凶风险)。
![29a782a2a2acaaeb3fe84b98c09a23fd.png](https://i-blog.csdnimg.cn/blog_migrate/1dd956cc3fb7586786979965917d29c1.jpeg)
虽说是“始终通知”,但实际使用下来通知数量并没有很多,还远不到令人厌烦的地步。
06、UAC发展至今
现在看来UAC这个当初受人诟病的功能能够存活到现在,确实要感谢微软主动选择并坚持了这条对抗用户习惯的道路,有效避免了很多安全问题。
固然有些操作确实需要提供给程序管理员权限,比如修改开机启动项,但是这些操作本不该频繁出现,只有在偶尔调用时才会弹窗。
以后再遇到有程序频繁请求权限,或许我们不该急着骂微软多管闲事,而是怀疑为什么这个程序需要如此频繁的获取管理员权限?它想干什么?
更有甚者在用户没有使用计算机的时候弹出请求权限,这样的软件还是换掉的好。
难道你宁可看各种流氓卫士的弹窗, 也不愿意看Windows的UAC安全提示吗?