输入法的注册、安装和卸载

原创 2011年01月15日 11:27:00

------------------------------------------------------------------
大家好,我是Mike,微软拼音的开发工程师。这里简单介绍下输入法的注册、安装和卸载。
------------------------------------------------------------------

注册输入法

输入法的安装和普通应用程序有一个大的区别是,除了复制文件到安装目录、做一些必要的设置外,还需要向Windows系统注册这个输入法。

我们前期一篇博文 TSF(Text Service Framework)简介中谈到,Windows有两种输入法的框架,IMM32和CTF。下面分别说下两种情况的注册。

IMM32框架

每个输入法要将自己注册为一个Keyboard Layout,具体来说做以下几件事:

A.在注册表中HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Keyboard Layouts,创建一个新的Key,名字为xxxx0804 (低位表示语言,这里0804表示简体中文;高位表示设备句柄,0000表示默认的physical layout,如00000804表示简体中文英文键盘)。譬如:

[HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Control/Keyboard Layouts/E0200804]

"IME File"="***.IME"
"Layout File"="kbdus.dll"
"Layout Text"="微软拼音输入法 2010"
"Layout Display Name"="@C://Program Files (x86)
//***//***.DLL,-101"

***.IME为一个传统的动态链接库,只是扩展名不一样。它必须export几个IMM框架必须要的函数接口。

B. Enable这个输入法,譬如:

[HKEY_CURRENT_USER/Keyboard Layout/Preload]

"1"="00000804"
"2"="e0200804"

这里表示语言栏会显示两个keyboard layout:
1为简体中文键盘,2为注册的某简体中文输入法

C.复制 IMSCxxx.ime到system32目录下

通过这三步,Windows就知道了这个输入法,并将其显示在语言栏中。

CTF框架

CTF框架下,一个输入法为一个TIP(Text Input Processor),其首先必须注册为一个COM组件。通过ITfInputProcessorProfileMgr::RegisterProfile()接口注册TIP的CLSID和ProfileID。这等价于下面写注册表的方式:

HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/CTF/TIP/{CLSID}/LanguageProfile/[langid]/{guidProfile}

Description=SZ:

IconFile=SZ:

IconIndex=DWORD:

Enable=DWORD:[0|1]

SubstituteLayout=SZ:

CLSID 代表TIP,同时指容纳TIP的COM的GUID,ProfileID是指具体某个输入法的ID,一个COM可以包含多个输入法ProfileID。譬如,微软拼音2010就在一个COM中实现了两个输入法:新体验和简捷,以满足不同用户需求。

或者使用老接口来注册

1) 通过ITfInputProcessorProfiles::Register()注册CLSID

2) 通过ITfInputProcessorProfiles::AddLanguageProfile()添加language profile

    -可以添加不同语言的多种的profile

    这等价于:

    HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/CTF/TIP/{CLSID}/LanguageProfile/[langid]/{guidProfile}

    Description=SZ:

    IconFile=SZ:

    IconIndex=DWORD:

3) 通过ITfInputProcesorProfiles::EnableLanguageProfileByDefault()来缺省Enable或disable 某profile.

    - 这个设置是系统级别,即应用于不同系统中的不同用户.

    - 如果没有调用此接口,默认是enable

    - 可以在HKCU中覆盖此设置

    这等价于:

    HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/CTF/TIP/{CLSID}/LanguageProfile/[langid]/{guidProfile}

    Enable=DWORD:[0|1]

4) 设置profile的名字:调用ITfInputProcessorProfilesEx::SetLanguageProfileDisplayName().

    - 可选步骤. 注意设置不同语言的名字。

    这等价于:

    HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/CTF/TIP/{CLSID}/LanguageProfile/[langid]/{guidProfile}

    Display Description=SZ:

5) 设置可替换的keyboard layout (仅使用键盘TIP)

    - ITfInputProcessorProfiles::SubstituteKeyboardLayout() 为profile设置可替换的hkl。

      当焦点从Cicero aware 的控件切换到non-Cicero aware的控件上时,这个hkl会被用到。这等价于:

    HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/CTF/TIP/{CLSID}/LanguageProfile/[langid]/{guidProfile}

    SubstituteLayout=SZ:

    

可选 – 在控制面板输入法对话框中隐藏profile

    HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/CTF/TIP/{CLSID}/LanguageProfile/[langid]/{guidProfile}

    HiddenInSettingUI=DWORD:[0|1]

    如果此键值不存在,则默认为0,即此profile显示在控制面板输入法对话框中

顺便提一下,在当前用户下设置默认输入法:

ITfInputProcessorProfile::SetDefaultLanguageProfile()

这只影响到新创建线程,而不会对已经运行的线程产生影响。当然,重启后,在所有线程都会生效。次接口只会影响当前用户,对系统中其他用户无影响

这等价于:

HKEY_CURRENT_USER/SOFTWARE/Microsoft/CTF/Assembly/[langid]/{TIP’sCategory}

Default=SZ:TIP’sCLSID

KayboardLayout=DWORD:

Profile=SZ:TIP’s guidProfile

从上面可以看到,无论哪种框架,都需要向注册表HKEY_LOCAL_MACHINE路径写入输入法信息,另外不同输入法也可能注册自己的组件到操作系统中,所以安装时:

第一,需要administrator权限;要求所用户必须属于administrators组的成员;

第二,如果系统中安装了某些安全软件,其可能阻挡写入注册表系统路径(如HKEY_LOCAL_MACHINE),这时候安装就不能成功。要么暂时关闭其功能,要么在其提示是选择“允许写入”,要么卸载它后再安装.

 

安装和卸载微软拼音输入法2010

从论坛和其他用户反馈上,在安装和卸载微软拼音输入法2010时有些用户会遇到问题。如果安装时解决上面两点还存在问题(下面所说仅针对从微软拼音主页http://www.microsoft.com/china/pinyin/ 下载的微软拼音输入法2010,不适用于Office 2010中文版中包含的微软拼音输入法),那按以下步骤确定问题:

1. 如果安装失败,要确认系统中是否残留以前安装过的。下载一个myuninstaller, 这是个绿色软件,直接运行:

   

2. 上面显示的是x86系统中的软件列表,如果存在红线中两个安装包中任意一个,全部卸载,

    Microsoft Office IME (Chinese (Simplified)) 2010
    Microsoft Office IMESS (Chinese (Simplified)) 2010

3. 安装原始安装包。

如果还失败,可以试试某用户的方法http://social.technet.microsoft.com/Forums/zh-CN/2087/thread/2af44c79-4005-4ebe-92d3-1fa003526353。理论上来说,只要管理员权限就能写入HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Image File Execution Options,但某些系统中不能写入,可能的原因是公司的域策略或者杀毒软件保护了此路径,因为这个路径非常特殊,恶意软件经常利用此路径而自动启动恶意进程。

微软拼音之所以写这个目录,是因为启用了SEHOP(Structured Exception Handler Overwrite Protection),参见http://msdn.microsoft.com/en-us/library/bb430720.aspx,这可以防止恶意程序利用此漏洞。

输入法的注册、安装和卸载

注册输入法 输入法的安装和普通应用程序有一个大的区别是,除了复制文件到安装目录、做一些必要的设置外,还需要向Windows系统注册这个输入法。 我们前期一篇博文 TSF(Text Se...
  • cosmoslife
  • cosmoslife
  • 2016年11月19日 13:02
  • 4130

Ubuntu12.04 安装与卸载拼音输入法

1)安装  以root 身份登录系统并打开终端输入: apt-get install ibus-pinyin 若不是root身份则打开终端后输入: sudo apt-get install i...
  • xinzheng_wang
  • xinzheng_wang
  • 2012年07月26日 13:15
  • 6213

如何注册和卸载DLL组件?

使用命令 regsvr32 就可以了,         注册时用 regsvr32     DLL组件名,         卸载时用 regsvr32 /u DLL组件名。...
  • dearwind153
  • dearwind153
  • 2013年10月20日 14:00
  • 1977

怎么删除或者彻底卸载输入法

电脑上带了很多输入法,例如五笔、郑码、搜狗拼音、智能abc等等。其实,对于一般的电脑用户来说,只需要保留一种或者两种自己常用的输入法就够用了。输入法多了,反而造成切换的困难,常常要点击好多次才能找到自...
  • tangruyi1992
  • tangruyi1992
  • 2016年09月06日 08:23
  • 889

RedHat下删除miniChinput安装scim&scim-pinyin(难点解决)

最近我在虚拟机下的RedHat不能输入中文,即使自带的miniChinput用Ctrl+space等切换组合键也不起作用,于是乎,我干脆就放弃自带的miniChinput,选择了scim(网上说这个输...
  • panda0037
  • panda0037
  • 2011年07月23日 00:27
  • 1540

卸载微软拼音输入法图解

 我平时一直用拼音加加,但老是被微软拼音输入法骚扰,所以有必要干掉它.下面给出卸载步骤:(我的是Office2003 ^_^)  OK了    ...
  • tanaya
  • tanaya
  • 2006年08月28日 13:51
  • 5825

Ubuntu 14.04安装和卸载搜狗拼音输入法

安装添加fcitx的PPAsudo add-apt-repository ppa:fcitx-team/nightly sudo apt-get update sudo apt-get install...
  • ziqian0512
  • ziqian0512
  • 2017年04月12日 09:19
  • 1964

C#对Windows服务操作(注册安装服务,卸载服务,启动停止服务,判断服务存在)

C#对Windows服务操作(注册安装服务,卸载服务,启动停止服务,判断服务存在)
  • hejialin666
  • hejialin666
  • 2010年06月09日 10:52
  • 5698

GenyMotion 使用问题: 输入法设置 + 软件安装卸载 + 文件共享

对于Android开发而言,GenyMotion确实是非常好用的,但就速度这一点,就足够令我个人喜欢。 在使用...
  • zhangyalin1992
  • zhangyalin1992
  • 2014年05月02日 13:58
  • 6397

ubuntu 14.04 删除ibus输入法引发的问题及解决方法

删除自带的ibus输入法,导致系统设置及其他一些东西没法使用。 解决方法: sudo apt-get install ubuntu-desktopsudo reboot 安装之前可能需要...
  • u014731529
  • u014731529
  • 2015年08月09日 10:45
  • 1443
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:输入法的注册、安装和卸载
举报原因:
原因补充:

(最多只允许输入30个字)