2008年10月18日

ctfmon.exe程序随系统启动,原因及方法

ctfmon.exe是什么程序,为什么总试图在系统启动项中添加:
ctfmon.exe是一个非常烦人的进程,现在都赖得去理它 
(以下内容均摘自网络!) 

ctfmon - ctfmon.exe - 进程信息 
ctfmon - ctfmon.exe - 进程信息 
进程文件: ctfmon or ctfmon.exe 
进程名称: alternative user input services 
描述: 控制alternative user input text processor (tip)和microsoft office语言条。ctfmon.exe提供语音识别、手写识别、键盘、翻译和其它用户输入技术的支持。 
常见错误: n/a 
是否为系统进程: 否 

-------------------------------------------------------------------------------- 
ctfmon.exe是office自动加载的文字服务,安装office xp后,部分输入法变得非常难用,卸载office xp后,它在控制面板中生成的文字服务仍然存在,任务栏中的输入法也没有恢复。目前,禁止文字服务自动加载的常用方法有三种: 

1.从系统配置实用程序(msconfig.exe)里移除ctfmon.exe,这个方法并不能真正禁用文字服务,因为当启动office程序时,文字服务还会自动加载。 

2.在“开始→运行”中键入“regedit.exe”,打开“注册表编辑器”,展开分支“hkey_users\.default\software\microsoft\windows\currentversion\run”,将ctfmon.exe项更名为“internat.exe”即可。但此方法在启动office后也会失效。 

3.以windows xp为例介绍第三种方法的操作步骤:首先退出所有的office 程序,进入“控制面板→添加/删除程序”,选择“microsoft office xp”项,点击“更改”;在维护模式对话框里选择“添加或删除功能”,然后点击“下一步”;展开“office共享功能”,点击“中文可选用户输入方法”项,选择“不安装”,点击“更新”;然后进入“控制面板→区域和语言选项”,进入“语言”选项卡,点击“详细信息”,在已安装服务列表中,将除英语(美国)之外的其他输入法一一删除;最后点击“开始→运行”,键入“regsvr32.exe /u msimtf.dll”注销msimtf.dll,接着键入“regsvr32.exe /u msctf.dll”注销msctf.dll。这种方法效果不错,但是操作太繁琐。

其实笔者还有个简单实用的方法,就是更名。office自动加载ctfmon.exe时只能靠文件名来判断哪个程序是它所需要的,所以我们只需将系统目录(如“系统盘符\windows\system32\”)下的ctfmon.exe更名为internat.exe(或者我们想让系统自动加载的其他程序)即可。 

如果你的win2000系统装了officexp或以上版本,它会在你和系统里留下一个可误的ctfmon.exe,这真的是一个恶魔,曾经困扰了无数的网友。今天我决意执起正义之剑,斩妖除魔,还网友一个纯洁的中英文输入空间! 

在对它行刑之前,我先来宣读一下他的罪状: 
1. 无论你打开什么窗口,总会弹出一个输入法工具体,并且默认是中文输入,非常讨厌。
2. 它替换了原来的区域和输入法设置,并以一个文字服务的设置取而代之,而且不能设置默认的输入法。 
3. 结束掉原来的输入法工具进程internat.exe,并令他不能在开机时起动。 
4. 将自己放在开机时启动的程序列表中,除非修改注册表,否则无法去除。 
5. 像病毒一样有重生能力,当你把ctfmon.exe删了以后,他又会随着office的启动而重新生成。 
6. 当你结束了ctfmon.exe后,经常会出现输入法切换快捷键乱掉的情况。 

好,经最高程序员审判庭批准,现对ctfmon.exe执行死行,立即执行! 

第一步:右击任务栏空白处,点“任务管理器”。 
第二步:找到ctfmon.exe,并终止它。 
第三步:在系统目录下的system32目录下找到ctfmon.exe,删除掉。 
第四步:写一个最简单的api程序(代码见附录),编译后放到ctfmon.exe所在目录,并更名为ctfmon.exe。 

第五步:点击“开始”菜单,点击“运行”,输入internat.exe后点击确定。 
第六步:重起计算机。 

执行完毕! 


附: 
1. 程序代码如下: 
#include  
int apientry winmain( hinstance, hinstance, lptstr, int ) 

handle m_hmutex = createmutex( null, true, "ctfmon.exe" ); 
if( getlasterror() != error_already_exists ) 
while ( 1 ) sleep( infinite ); 
return 0; 


2. 如果执行后发现word的输入法无法正确使用,解决办法如下: 
第一步:打开word(废话) 
第二步:点击“工具”菜单中的“选项”子菜单。点击“编辑”选项卡。 
第三步:清除“输入法控制处于活动状态”的复选。点击“确定” 
第四步:点击“工具”菜单中“语言”子菜单中的“设置语言”项。 
第五步:在列表中选择“英语 美国”,点击确定。 
第六步:关闭word,重起计算机。 
解决。


没有评论: