現象:Vista 下多款輸入法 (五筆、紫光拼音、拼音加加等) 在 IE 瀏覽器中無法正常跟隨游標、候選窗不顯示、無法輸入中文;其他程式 (記事本、Office) 正常。根因在於 IE7/8 引入的 保護模式 依賴 UAC、UIPI (User Interface Privilege Isolation)、MIC (Mandatory Integrity Control) 三大安全機制,導致低完整性等級的 IE 進程與中等完整性的輸入法進程通訊受阻。
| 機制 | 阻斷點 | 對策 |
|---|---|---|
| MIC (強制完整性控制) | IE 進程以「低」完整性執行,無法寫入使用者設定檔區域;寫入操作被重導向至虛擬化資料夾。輸入法若需與中等完整性進程共享記憶體/檔案,會讀取錯誤位置導致失效。 | 修改輸入法程式碼,支援「低」完整性進程存取共享區域;或將共享區域 ACL 加入「低」完整性標籤 (SACL)。 |
| UIPI (使用者介面特權隔離) | UIPI 禁止低完整性進程向較高完整性進程發送 Windows 訊息 (WM_*)。輸入法若依賴向應用程式發送訊息 (如候選窗位置、組合鍵通知) 將被攔截。 | 輸入法加入 ChangeWindowMessageFilterEx 允許特定訊息;或改用 RPC/COM 跨完整性通訊。 |
| UAC (使用者帳戶控制) | UAC 為 MIC/UIPI 提供基礎架構;關閉 UAC 即間接關閉 MIC/UIPI,但犧牲整體安全性。 | 不建議關閉 UAC;優先推動輸入法廠商發布 Vista 相容版本 (簽署、支援低完整性)。 |
regedit。HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System。EnableUIPI、數值 0。效果:禁用 UIPI,輸入法在 IE 保護模式下恢復正常運作 (紫光、拼音加加等舊版輸入法實測有效)。
代價:降低系統防禦深度,惡意網頁可透過訊息注入攻擊高完整性進程;IE 保護模式圖示仍顯示「開啟」但實際防護大幅削弱。