在實際的使用過程中,發現這個方法在大多數時候可以正常工作,但是如果在打開IE之前,已經調用過紫光拼音,則可能無法在IE浏覽器裡順利啟動紫光拼音。有人曾說,Windows Vista沒有自帶的工具,無法查看和設置文件夾的完整性級別。
果真是這樣嗎?
筆者有幸在Tech.Ed北京聽了IE保護模式的負責人Robert Gu的一堂課,了解到Windows Vista其實自帶了一款命令行工具Icacls.exe,可以用它來查看和設置指定文件夾的完整性級別。
提示
Robert Gu,微軟總部的首席開發主管,目前負責IE 7安全的開發。他是EFS算法的發明者,曾主導EFS、PKI的開發,是華人中的驕傲。
現在我們可以大膽猜測,既然有現成的Icacls.exe可供使用,則完全可以用它來把紫光拼音的工作目錄“%AppData%\Unispim”的完整性級別設置為“低級”,這樣無論是IE進程(低級)和外部的進程(中級),都可以訪問該工作目錄,紫光拼音就可以工作正常。
說做就做,接下來就以Windows Vista RC2 Build 5744為例進行介紹(需要注意的是,該Icacls命令在RC1下無法正常工作):
1.首先需要給當前的帳戶增加“修改一個對象標簽”特權,其內部名稱為SeRelabelPrivilege。方法是運行secpol.msc,打開“本地安全策略”管理單元,在左側控制台樹中展開本地策略、用戶權限分配,在右側詳細窗格裡定位到“修改一個對象標簽”策略項,雙擊該策略項,把當前的登錄帳戶添加進去,如附圖所示。
2.注銷重新登錄,然後以管理員權限運行命令提示符,在命令提示符下輸入以下命令:
Whoami/all |find /i "SeRelabelPrivilege"
結果如附圖所示,這表示當前登錄用戶已經擁有SeRelabelPrivilege特權,只是狀態為禁用。
3.然後運行以下命令:
Icacls.exe %AppData%\Unispim /SetIntegrityLevel Level:L
命令結果如附圖所示,表示成功完成。
4.可以繼續運行以下命令,查看%AppData%\Unispim目錄的完整性級別:
Icacls.exe %AppData%\Unispim
命令結果如附圖所示,表示該目錄的強制完整性級別為“低”。
經過這樣處理以後,就可以正常在IE浏覽器裡啟用紫光拼音了,而無法針對特定網站禁用IE保護模式。如果偶爾發現無法在IE裡啟動紫光拼音,這時候不要著急,只需關閉其他啟用輸入法的程序,一般是Outlook、Word、Notepad等編輯程序,然後就可以在IE裡正常使用紫光拼音。
接下來,還有兩個問題:
1 細心的讀者朋友發現用Whoami/all命令查看當前用戶的訪問令牌時,發現SeRelabelPrivilege特權是禁用的。而這個特權正是用來設置對象的完整性級別,那麼這時候為什麼Icacls命令可以成功運行?
當運行Icacls命令設置目錄的完整性級別時,該Icacls進程的訪問令牌會自動啟用SeRelabelPrivilege特權,以便命令能夠順利完成。
2。由於Windows Vista RC1下的Icacls命令不能正常工作,這裡可以下載一個第三方的命令行工具chml.exe。