你下载好一个Windows应用,双击安装包,“啪”的一下——屏幕骤然变暗,那个熟悉的弹窗跳出来,问你是否允许此应用对你的设备进行更改。但另外一个应用安装时,却一路绿灯,Windows连眼皮都没抬一下。
同一台电脑上,这两种安装包大家想必都碰到过,有时安装前后相隔不过几分钟。Windows对自己放行什么向来挑剔,而两者的差别,通常归结于安装包请求了哪些权限,又打算把文件放到哪里。
并非每次安装,Windows都要管理员权限
关键看安装包动了什么
在Windows XP时代,日常大家基本都直接用管理员账号登录,程序默认拿到完整管理员权限,软件、恶意代码想改系统几乎不受阻拦,风险很高。
Windows从Vista开始增加了一项名为用户账户控制(UAC)的功能,专门阻止应用未经许可便对系统大动干戈。当某个程序请求管理员权限时,就是它调出那个熟悉的弹窗,把屏幕一暗,问你:“是否允许此应用对你的设备进行更改?”
即便你用管理员账户登录,Windows平时也只以普通用户权限运行程序。程序一旦需要更高权限,Windows就会请你点头;倘若你用的是普通账户,通常还需要输入管理员账号的密码来核验身份。
至于屏幕突然变暗,真不是为了演你,它在防“假弹窗”。
UAC弹窗默认会切换到一个独立的安全桌面(Secure Desktop),由系统底层接管,普通程序既没法在上面伪造一个一模一样的弹窗骗你点“是”,也没法模拟鼠标替你按下确认。换句话说,只要屏幕真的暗了下来,这个对话框就一定是Windows本系统画的,而不是哪个网页、哪个软件演给你看的。这也是为什么UAC滑块里有一档专门叫“不切换安全桌面”,选了它,弹窗就不再变暗,但安全性也跟着打折扣。
话虽如此,安装软件并非次次都要管理员权限。
如果安装包凭你现有的权限就能完成安装程序,Windows也就没有理由半路拦下你盘问。
但是,凡是要改动Windows受保护区域的安装包,一般都得拿到管理员权限,比如往 C:\Program Files写入文件、安装驱动程序、注册系统服务,或是修改影响全局的设置。64位Windows甚至专门设有两个Program Files文件夹,而这两处都是受保护的位置。这些操作可能波及其他用户乃至整个操作系统,所以Windows把它们看得格外紧。
安装包本身的打包方式也有讲究。Windows 能够识别出哪些是安装程序,它靠一套安装程序检测机制,把那些需要管理员批准的setup程序揪出来。
一个以普通用户权限启动的安装包,没法跑到一半自行“提拔”成管理员,它若想访问受保护的资源,就得另起一个进程来请求提权,否则那些操作只能以失败告终。
你的用户文件夹,留了一扇后门
有些应用安装时,Windows一声不吭
每个Windows账户都有一套专属文件夹,应用无需管理员权限,就能往里存文件、写配置。常见的去处之一是%LOCALAPPDATA%\Programs,对应路径 C:\Users\你的用户名\AppData\Local\Programs。而更庞大的AppData文件夹里,早已堆满了各种应用配置、临时文件和其他个人数据。
好奇自己的文件夹里藏着什么?
按下“Win + R”,输入“%LOCALAPPDATA%\Programs”,进去瞧一眼就知道了。你或许会发现好几个熟悉的应用悄悄窝在里头。当然,并非所有按用户安装的程序都会安装到这个目录。而这个路径,正是文件资源管理器里几个很实用的隐藏小技巧之一。
这些文件夹本来就归你所有,安装包自然能轻轻松松把程序文件放进去,替你建好桌面快捷方式,再更新你个人的注册表配置。一切仅凭标准权限就能顺畅完成。
这种安装方式叫“按用户安装”(per-user installation)。说白了,应用只装给你这一个Windows账户用,而不是给这台电脑上所有登录的人都装上。
有些应用让你自己选走哪条路
在Windows平台下载VS Code时,会看到两种安装包,二者需要的权限不一样。
code.visualstudio.com/docs/setup/windows
多数人选择用户版安装包即可。它只把VS Code装到你的账户名下,还支持后台更新,不必动不动就请管理员批准。系统版安装包让这台电脑上的每个人都能用上编辑器,但无论安装还是应用内更新,都得有管理员权限。两个版本的编辑功能完全一致,怎么选,归根到底取决于谁要用,以及你希望更新如何处理。
至于为什么用户级安装(per-user)这几年越来越流行?一个很现实的原因是公司电脑。很多企业把管理员权限收得死死的,员工装个软件得层层找IT。于是Chrome、Teams这类应用干脆默认装进AppData,不需要管理员点头就能装、能更新,绕开了公司的权限封锁。另外还有一类绿色便携软件(Portable),连安装都省了,整个程序就是一个文件夹,不写注册表、不碰系统目录,拷到U盘里随身带走,本质上也是只在普通权限范围内活动的极端形态。
微软商店也有自己的一套安装机制
从商店装的应用,走的是另一条路
老式安装包通常自己负责复制文件、改动系统。用微软MSIX技术打包的应用则大不一样,安装过程由Windows亲自操刀。
Windows可以在后台安全地完成这些操作,应用文件通常存放在受保护的C:\Program Files\WindowsApps文件夹里。普通应用自己没权限做的事,Windows替它做了。正因如此,安装可以一路走完,也用不着你批准什么管理员提示。
你可以亲手试试:哪怕当前账户就是管理员,直接双击进入照样吃“权限被拒绝”的闭门羹。这个文件夹的所有者是比管理员还高一级的系统账户TrustedInstaller,普通管理员默认无权翻看。想进去得手动更改所有权,但看完建议原样退出来,里面的东西一动,商店应用很可能就废了。
不过这里也有个坑。微软商店同样上架传统的Win32桌面应用,这些应用会按自己的方式安装。除此之外,有些MSIX包若要注册后台服务或改动整台电脑的设置,照样会弹出提示。
不弹UAC的安装包,未必就值得信任
光凭普通权限,恶意软件也能搞出不少事
看到应用不触发安全提示,就以为它万无一失,可惜你只是一厢情愿。
恶意程序拿着你日常的标准权限运行,照样能造成不小的破坏:翻看你的个人文档,从你正开着的浏览器会话里窃取保存的信息,甚至用勒索软件把你的文件锁住。恶意代码不必接管整个操作系统,就足以让你彻底完蛋。
用户账户控制(UAC)的作用,是阻止那些需要管理员权限的未经授权更改。它不是杀毒软件,也看不出一个以普通权限运行的程序是否包藏祸心。
所以,靠调低UAC级别来判断软件安不安全,一点也不高明。调低 UAC 会削弱设备的防护,而把提示彻底关掉,等于撤掉了一层重要的保护。
学会看UAC弹窗的“脸色”行事
同样是弹窗,措辞和颜色其实分了等级:
写着“是否允许此应用对你的设备进行更改”、并能看到明确发布者名称的,通常带有效数字签名,来路相对清楚。
一旦弹出黄色警告、写着“未知发布者”,就是Windows在提醒你:这程序没有可信身份,要不要放行,自己掂量。
点“是”之前,多看一眼发布者名字,是成本最低、却最容易被忽略的一道防护习惯。
另外还有一个隐藏小技巧:运行框输入shell:AppsFolder,就能调出完整的应用清单,系统工具、隐藏组件、微软商店应用,全部在这里展示出来。
我宁愿偶尔被打断一下
很多人觉得Windows的权限提示有点戏精,尤其是装个寻常软件,整个桌面都要暗下来再询问你一下。但话说回来,与其把自己家的钥匙拱手交给每一个应用,我宁可忍受这偶尔的打断。
而当某个程序安安静静地装完,我也乐得欣赏一个懂得守本分、不越界的安装包。毕竟,Windows 打断我干活的理由,已经够多了。
热门跟贴