近來發現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那樣的尷尬局面)蓋茨,蛋疼是一種病,得治。