Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Vista/Win 7 輸入法失效?UIPI 機制阻擋訊息傳遞,註冊表關閉 EnableUIPI=0 強制相容 (犧牲安全性)

編輯:Win7 系統應用技巧

Vista/Win 7 引入 **UIPI (User Interface Privilege Isolation)** 機制:低完整性等級進程 (如 IE 保護模式) **無法向較高等級進程 (如傳統輸入法) 發送視窗訊息**。導致紫光拼音、拼音加加等舊版輸入法在 IE/Edge 保護模式下無法跟隨游標、候選視窗不顯示、無法上字。

核心衝突

  • IE 保護模式 = 低完整性等級 (Low IL)。
  • 傳統輸入法 = 中完整性等級 (Medium IL)。
  • UIPI 規則:低 IL 進程 **禁止** 向中/高 IL 進程發送訊息 (WM_IME_* 等)。
  • 結果:輸入法無法接收 IE 的輸入法相關訊息 → 失效。

解決方案 (由優到劣)

1. 更新輸入法至支援 UIPI 版本 (最佳)

現代輸入法 (微軟拼音、微軟注音、搜狗、微信輸入法、小狼毫/Rime 等) 已支援 UIPI,透過 ChangeWindowMessageFilterEx 允許特定訊息通過,或採用 RPC/COM 跨進程通訊,**無需降低系統安全性**。

2. 關閉 IE 保護模式 (次佳)

IE「網際網路選項」→「安全性」→ 取消勾選「啟用保護模式 (需要重新啟動 IE)」。IE 進程提升為 Medium IL,可與輸入法正常通訊,**但犧牲 IE 沙箱防護**,惡意網頁更易攻擊系統。

3. 註冊表強制關閉 UIPI (最暴力、不建議長期使用)

  1. Win+R → regedit。
  2. 定位至:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System
  3. 新建 DWORD 值 EnableUIPI,設為 0。
  4. 重新開機生效。

後果: 系統層面完全停用 UIPI,**所有低 IL 進程可自由向高 IL 進程發送訊息**,等同移除 IE 保護模式核心防禦,**安全性大幅下降**,僅建議舊環境無法更新輸入法時暫時使用。

另一相關問題:低 IL 進程寫入檔案被虛擬化

IE 低 IL 進程寫入使用者設定檔 (如 %USERPROFILE%) 會被重導向至 %LOCALAPPDATA%\VirtualStore。若輸入法元件需共享設定檔,會讀不到 IE 寫入的資料。解法:將共用資料夾 ACL 加入「低」完整性標籤 (icacls /setintegritylevel low),或讓外部進程也以低 IL 執行 (psexec -l)。

Copyright © Windows教程網 All Rights Reserved