题目有点绕。需求是这样的:在WinXP/2003下,标准用户组Users具有一般的使用权,但不能对系统进行更改,在那个没有UAC的时代,合理配合使用Users组和手动提权到Administrator,其实也是可以做到和现在有UAC时同等安全地裸奔的(但很可惜那个时代我修电脑的认知还停留在Win98的水平,对NT系统的强大了解甚少,一度认为XP系统很不安全,连自己都装过卡巴死机和360,黑历史不堪回首)。
在标准用户组下,所有程序本身都能运行的,但进行需要权限的操作会直接Access Denied失败。使用标准用户的case还是有使用的地方的,适合于非IT工作单位或家庭、有网管的情况。例如豆子每次回家都会表示自己家中的电脑被装了各种全家桶,考虑到豆子并不能随时向豆爸普及正确使用电脑的知识(这点和我家情况不一样,我爸本来电脑水平并不弱,我是真IT所以多年来一直在黑国产软件而且我爸还是注重隐私的。但最近也有点hold不住,因为我妈,最近回家电脑上都会多了TB浏览器啊,文件默认关联变成QQ音乐啊,至于为什么不是全家桶估计因为阿里没做杀软吧),我建议他直接给受限帐户,常用软件弄好,不允许新软件的安装。
然而豆子配置后表示,不给力啊。在Win7/2008R2下,标准用户遇到需要提权的情况时还是会蹦安全桌面,要求输入管理员的密码,这不是等于明摆着告诉豆爸我把你电脑锁了请打电话找我要密码。好的我们有组策略,组策略里可以设置标准用户的提权操作为拒绝提权。结果这样一来任何要求提权的软件均不能启动,包括计算机管理、配置了manifest的exe以及文件名中带有setup字样的exe,提示组策略禁止了该软件启动请与管理员联系。好吧软件都没法启动了还用个毛啊。
我们需要的是像WinXP/2003那样,软件还能用但是干不了啥流氓事。这个问题我当时实验了不少设置没有成功,后来一度搁置了,主要是网上没有搜索到类似的案例,也许是这个问题描述不好总结出关键词搜索。UAC是在程序运行前的,显然我们没法去把所有程序的manifest去掉。三个月前因为这个问题把家里的电脑换回了xp。
今天帮忙优化工作室的电脑,那种ghost win7的版本,默认administrator帐户,试着开一个普通的受限用户,结果需要提权的时候uac并没有蹦出来弄的反而提不了,所有程序右下角也没有小盾牌,需要权限的程序也能以受限权限运行,点任务管理器里的显示所有用户进程怎么点都会重启任务管理器,但是还是受限权限,计算机管理也能以受限权限打开(但打不开磁盘管理)。这很奇怪,和我当时做实验时不一致。
一度以为是ghost win7直接把uac阉割了,但没查到具体怎么做的,但无论如何,这说明我想要的这个功能在win7中还是能实现的。自己再做实验时无意中按照一篇文章中说的把HKLM\Software\Microsoft\Windows\CurrentVersion\Policies\System中EnableLUA设为0,然后重启,居然成功了。后来再进一步看,发现这货就是组策略中的“管理员审批模式”设为禁用或者控制面板中UAC设置中最低一级的完全关闭嘛。当时做实验时应该也有试过这样的操作,但为什么没成功现在不得而知。
总之,结论是如果需要在Win7/2008R2中使用WinXP/2003中的受限用户,则应将UAC彻底关闭,否则所有带有manifest的程序均无法直接运行而是会弹UAC密码框。关闭UAC后,右键的管理员权限运行还在,但是不起作用,若想避免切换用户提权,需要按住shift右键选择以指定用户运行,然后输入管理员的用户名和密码,但这时程序实际运行的帐户也将是另外的帐户,环境变量也是另外的帐户的,例如AppData不再指向当前帐户的目录。