CTFMON.EXE 是 Windows 输入法指示器(CTFMonitor),也就是任务栏右下角通知区域的小键盘图标。在 Windows XP 或早期版本的 Windows 2000/ME/9X 中(这些早期系统必须安装 Office XP 或以上版本才具有 CTFMON.EXE),CTFMON.EXE 是通过在注册表项:
HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Run
添加命令,以启动加载项的形式随 Windows 的运行一同加载的。每次启动 Windows 后,我们都可以看到CTFMON.EXE 进程常驻于内存。而从 Windows Vista 开始,Windows 不再以注册表项的形式加载输入法指示器。在 Windows 7/8 的默认系统设置中,我们应该也看不到 CTFMON.EXE 进程常驻于内存了。
在微软中文技术论坛中曾经有很多人问过 Windows 7/8 的输入法指示器消失不见、在任务栏通知区域看不到小键盘图标的问题,不少人给出的建议解答就是在上述注册表中手动添加 CTFMON.EXE,这个方法也确实可以解决问题。可是,Windows 7/8 的默认系统设置是如何实现不通过注册表项自动加载输入法指示器的呢?Windows 7/8 到底需不需要 CTFMON.EXE 常驻内存呢?
原来,Windows 7/8 加载输入法指示器的默认设置不是通过注册表、而是通过任务计划。我们可以在Windows 7/8 中运行命令:
%SystemRoot%/system32/TASKSCHD.MSC
在 MMC 控制台中启动任务计划,并在主菜单的“查看”中选中“显示隐藏的任务”复选框。接着我们依次展开
“任务计划程序库”-“Microsoft”-“Windows”-“TextServicesFramework”
在这里便可以看到隐藏的任务 MsCTFMonitor,其触发对象是“任何登录的用户”。这就是 Windows 7/8 用以取代注册表项加载输入法指示器的方法。
因此,通过注册表项手动添加 CTFMON.EXE 的方法虽然依旧可行,但我们说,Windows 7/8 已经不再需要 CTFMON.EXE 常驻于内存了。如果 Windows 7/8 遇到了输入法指示器消失、看不到小键盘图标停靠于任务栏通知区域的问题,我们可以从如下三个方面检查:
- 检查 TextServicesFramework 中的隐藏任务 MsCTFMonitor 是否被禁用或删除。
如果此任务被禁用,或者其触发对象由“任何登录的用户”被修改为特定帐户,我们可以将任务重新启用并设置其触发对象为“任何登录的用户”;如果此任务被删除,我们可以从其它 Windows 7/8 计算机中将此任务导出为 .XML 文件,复制到有问题的计算机中重新导入至 TextServicesFramework 任务列表。
文章的最后,博主也会给出一个备份好的 “MsCTFMonitor.XML”
- 确认在输入法列表中添加有两种或两种以上的输入法。
如果输入法列表仅有一种输入法,输入法指示器就失去了存在的意义,因此我们需要添加两种或两种以上的输入法。在默认的系统设置中,我们应该至少添加有“中文(简体)-美式键盘”及“微软拼音输入法”。
- 确认将语言栏设置为停靠于任务栏。
我们在控制面板中打开“区域与语言选项”,切换至“语言栏”选项卡,在这里可以选择将语言栏设置为“隐藏”、“悬浮于桌面”或“停靠于任务栏”。如果我们希望输入法指示器的小键盘图标常驻于任务栏通知区域,应该选择“停靠于任务栏”。
只要上述三个地方设置正确,我们即可保证 Windows 7/8 始终在任务栏通知区域显示输入法指示器的小键盘图标,而无需在注册表中手动添加 CTFMON.EXE。Windows 7/8 也完全不需要 CTFMON.EXE常驻内存了。