近来发现win7的外壳程序explorer的数字签名损坏,移动文件时总是出现黄色的UAC提示框,便想恢复一个回来。

    用7z打开安装镜像中的install.wim文件,有四个文件夹,另有一个xml清单;我是旗舰版,进到了第四个文件夹里。找到explorer.exe,和现在系统里的比较hash,的确不一样了。

    于是结束掉explorer进程,管理员运行cmdmove备份,copy,重启。

    但是重启之后出问题了!!登陆之后就是黑屏只有一个鼠标,任务管理器查看各种服务没有启动,最重要的explorer也不在运行进程里面;运行时提示没有权限运行该程序。于是进到windows文件夹,把explorer复制到桌面,运行,进去了!

    然而究竟是为什么呢?打开刚刚提取的explorer的属性,对比原来的explorer的属性,发现用户组里少了SYSTEM项;添加之后重启就没事了。

    由此可以看出,windows在登陆域之后由explorer外壳启动其他该启动的进程,而当explorer不能被system读取和运行,其他从explorer继承SYSTEM用户权限的进程也没法启动,所以就卡在那里了。

    对比linux的用户和群组,windowsUAC还是有点213的;至少不管什么文件,在linux里对root用户至少有个初始的read权限。windows的这个用户账户控制,有点像在一张本来没有账户控制的文件表中贴了一张备忘,上面写着一一对应的权限,在win vista以上系统里要求系统必须查看这张备忘,以达到这个目的。怎么看都是有点挫的办法。不过从权限继承这一点看,微软倒是延续了自己早年在服务器系统多年的优点。

    不过话说回来,其实大多数人都是把UAC直接关掉的吧?(就像Red Hat里的SELinux那样的尴尬局面)盖茨,蛋疼是一种病,得治。