阅读:18663回复:0
从自然码珍藏版2013的安装过程看传统IME如何突破Windows UAC的层层限制
犹记得Windows XP在2004年迎来网络蠕虫高发期,使微软不得不推迟下一代产品Windows Vista的发布,集中人力开发防堵Windows XP系统漏洞的SP2安全补丁。两年后,强调安全性的Windows Vista终于发布,部署了所谓“用户账户控制”(UAC)的安全机制,一时间搞得第三方中文输入法“人仰马翻”,无不寻求关闭该机制以顺利安装输入法。这个问题一直延续到后来的Windows 7/8/8.1都不见改善,早期制作的输入法因安装程序未能兼容新版Windows而面对淘汰,未来第三方输入法前景堪虞。
自然码官方版自2009年发布7.27版以后已停止更新,目前由自然码爱好者上工制作的第三方DIY版“自然码珍藏版2013”还陆续更新,支持最新Windows 8/8.1,但安装前务必要关掉UAC。早期Windows Vista关闭UAC较简单,只需通过控制面板的用户账户取消UAC选项即可: Windows 7则通过移动滑块至最低级别来关闭UAC: 尽管Windows 8/8.1的UAC控件与Windows 7相同,但随着每次版本更新而不断推高的安全设置,只靠降低UAC级别已经无效,需要通过组策略编辑器 (gpedit.msc)来关闭UAC。 当前Windows 8/8.1的家庭用户大多采用单语言版,不包含专业版以上才提供的组策略编辑器。即使通过第三方安装了组策略编辑器(参考Windows Cannot find Gpedit.msc Error – Windows 7/8 FIXED),循着以下路径打开目录树: 计算机配置>Windows设置>安全设置>本地策略>安全选项依然无法找到安装自然码必须禁用的关键配置项目: 用户账户控制:以管理员批准模式运行所有管理员看来该配置项目仅存在于专业版以上,无关乎Windows 8/8.1单语言版中是否安装了组策略编辑器。 追本溯源,组策略最早出现于Windows 2000,主要通过修改注册表中相应的项目达到配置计算机的目的。相信大家对注册表不会感到陌生,那么有没有办法找到对应上述配置项目的注册表项呢?经过多番周折,总算从微软TechNet技术资源库找到了《UAC组策略设置和注册表项设置》,详列全部涉及UAC的配置项目所对应的注册表项目,其中安装自然码必须禁用的配置项目为: HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Policies\System: EnableLUA默认值1为启用,安装自然码必须改为0禁用。改动后需重启电脑才生效。 接下来,务必要关掉杀毒软件的实时监控,否则安装程序无法顺利完成或安装完成后自然码没有添加到输入法列表中。如果碰到安装程序无法顺利完成,务必再次重启电脑,并关掉杀毒软件的实时监控,重新安装一遍即可。如果碰到安装完成后自然码输入无效或没有出现在输入法列表中,这时输入法设置工具(IMEtool)可以派上用场了。从输入法列表中查看有没有自然码,有则先删除后添加,无则直接添加即可。 至此,自然码安装完毕!重新开机验证自然码输入是否有效。有些安装说明提到要先删掉系统内置的微软拼音输入法或升级后的必应输入法,但实践证明Windows 8/8.1的中文键盘一定要保留一个中文输入法,仅仅留下英文键盘是无效的。如果安装完成后自然码替代了某个中文输入法,则使用上面提到的输入法设置工具加以修复。 然而遗憾的是Windows 8/8.1在不打开用UAC的条件下,其Metro/Modern用户界面的应用无法调用,如Windows应用商店、视频等。视频打不开也就罢了,反正比它出色的替代品多的是,但Windows应用商店打不开就严重了,Windows 8/8.1的未来系统重大升级就无从谈起了(注:桌面模式下的Windows升级只提供周期性补丁更新)。一旦恢复启用UAC,自然码输入是否还保持有效呢?有没有其他副作用呢? 我较后想起早在Windows Vista时代,由五笔爱好者论坛的hhhhwwww改进的传统输入法生成器曾提到通过命令行解决输入法模块受限制的问题,那么Windows 8/8.1是否可以如法炮制呢?有关命令行如下: echo y|cacls %systemroot%\System32\Zrm2000*.ime /C /G Administrators:F Users:F Guests:F上述命令行适用于32位系統上。在64位系统上,另有一个系统目录SysWOW64专门用于保存64位系统上32位程序的模块文件(WOW64表示Windows 32-bit on Windows 64-bit)。当安装自然码到64位系统上,相应输入法模块理应安装到SysWOW64目录中,否则即使输入法能够调用,输入法图标可能显示异常。要提高64位系统上32位输入法模块的权限,则需将上述命令行的System32目录改为SysWOW64目录。 然而对照其他输入法模块在System32或SysWOW64目录的文件属性(如必应输入法),自然码模块文件属性的安全选项卡仅缺少其他输入法模块还包含的Everyone组(具有读取和执行权限),其余三个组都已到位,其中ALL APPLICATION PACKAGES具有读取和执行(Read&execute)权限,而SYSTEM和Administrators则具有完全控制(Full control)权限。添加具有读取和执行权限的Everyone组这一步骤实际上是可选的,可以通过资源管理器的图形交互界面完成操作,也可以采用如下命令行: icacls %systemroot%\System32\Zrm2000*.ime /c /grant Everyone:RX (用于32位系统)经过实测,在Windows 8/8.1开启了UAC的情况下,可以正常使用自然码输入。至此,自然码珍藏版2013的安装工作终于功德圆满,可以告一段落了。 综上所述,总结以下几点心得:
◆32_iexplore ◆Go写字板 建议安装程序自动检测用户系统是否64位,直接在64位系统的桌面上建立快捷方式,而不是像现在那样等待用户自行发现。 |
|