Vista安全配置拒绝使用第三方输入法


  本文标签:vista

  Windows Vista下无法正常使用第三方输入法的现象,一般是由于IE保护模式的作用,由于IE保护模式依赖于UAC、UIPI和MIC的作用,所以大概可以认为是UAC、UIPI或者MIC的安全功能导致这些输入法出现问题  。

  1. 一山不容二虎

  保护模式下的IE进程运行在“低”级别,所以无法写入用户配置文件的区域,这样就可以阻止恶意网页破坏用户和系统数据  。同时IE会自动把这种写入操作重定向到一个特定的区域  。这样既能够确保安全,同时又能让IE的组件和加载项继续正常运行  。

  但是如果IE加载项必须要和一个“中级”的进程一起共享数据,那么可能就会有问题,因为这时候IE进程(加载项)所访问的数据实际上被重定向了,而“中级”依然会去访问原来的位置,这可能导致错误  。

  解决的办法,是修改这些加载项,让它和外部进程一样同时有权限访问某个特定的区域;或者让外部进程也运行在“低级”级别  。

  也可以手工修改系统,可以采用《Windows Vista IE下紫光拼音的解决办法》所述的方法,把该共享区域设置为允许“低级”进程访问  。

  2. UIPI惹的祸

  如果IE加载项需要给外部进程发送Windows消息,就会被阻止  。这是由于UIPI的作用,只允许高级进程给平级或者低级的进程发送消息,这有点类似以前的地下党,只允许上级联系下级(单线联系)  。但是这可能会对一些老的输入法产生影响,导致无法正常工作  。

  解决的办法,是对输入法进行修改,允许外部进程接受指定的Windows消息  。或者使用RPC等安全机制,在IE进程和高级进程之间通信  。目前,只能手动修改系统,强行禁用UIPI,确保输入法的兼容性  。不过这会减弱系统的安全性,同时也等于阉割了IE保护模式的功能(尽管系统提示IE保护模式仍然在起作用,实际上已经被大大削弱)  。
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System

  新建一个DWORD键值EnableUIPI,设置为0即可  。

  重启系统,再测试几下,应该可以解决类似紫光拼音、拼音加加的问题,而且是真正的“彻底”解决  。

  (责任编辑:城尘 68476636-8003)