最近在网上下个了软件,在安装的时候提示是否覆盖系统文件,点确认后重起,发现系统出现很多问题。不得已,只好把它卸载了,但是每次启动的时候都弹出“无法定位程序输入点ldrlockloaderlock于动态链接库ntdll.dll上 。”是启动ctfmon.exe时候弹出来的。而且在启动其它一些程序时 也会弹出这个对话框,十分烦人。
开始怀疑是ntdll.dll文件被替换,于是运行sfc /scannow进行系统文件恢复。
完了后,还是不见效。
于是去baidu上搜索了半天,发现很多人都碰到了这样的问题,但是都没有提出比较有效的解决办法。后来去google上搜索,发现老外也碰到过。有怀疑是ntdll.dll文件的问题的,有怀疑是ctfmon.exe有问题的。有些人甚至重装系统才解决。
不过这些文章给了我些启示。那就是让我确认应该是和ctfmon.exe有关系,于是找了下ctfmon.exe相关的资料。
进程文件: ctfmon 或者 ctfmon.exe
进程名称: Alternative User Input Services
描述:
ctfmon.exe是Microsoft Office产品套装的一部分。它可以选择用户文字输入程序,和微软Office XP语言条。这不是纯粹的系统程序,但是如果终止它,可能会导致不可知的问题。
出品者: Microsoft Corp.
属于: Microsoft Office Suite
他可能会导致以下几种情况的发生:
1. 无论你打开什么窗口,总会弹出一个输入法工具体,并且默认是中文输入,非常讨厌。2. 它替换了原来的区域和输入法设置,并以一个文字服务的设置取而代之,而且不能设置默认的输入法。3. 结束掉原来的输入法工具进程internat.exe,并令他不能在开机时起动。4. 将自己放在开机时启动的程序列表中,除非修改注册表,否则无法去除。5. 像病毒一样有重生能力,当你把ctfmon.exe删了以后,他又会随着Office的启动而重新生成。6. 当你结束了ctfmon.exe后,经常会出现输入法切换快捷键乱掉的情况。
如果你真的想让这个程序彻底消失,那么我给你提供一个网络上流传的方法,这个方法我没有试过,不过我看了以后感觉应该没有什么问题,不过我希望你还是仔细斟酌,方法如下:
第一步:右击任务栏空白处,点“任务管理器”。
第二步:找到ctfmon.exe,并终止它。
第三步:在系统目录下的system32目录下找到ctfmon.exe,删除掉。
第四步:写一个最简单的api程序(代码见附录),编译后放到ctfmon.exe所在目录,并更名为ctfmon.exe。
第五步:点击“开始”菜单,点击“运行”,输入internat.exe后点击确定。
第六步:重起计算机。
执行完毕!
附:
1. 程序代码如下:
#include windows.h
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;
}
外国的讨论时大多建议如下:
Probably a bad or mismatched DLL causing this. Try this:
1. Unregister msctf.dll using the command "Regsvr32 /u msctf.dll".
2. Rename both msctf.dll and ctfmon.exe to .old extensions.
3. Reinstall or repair Office.
于是想到应该是msctf.dll的问题了。就去其它电脑上拷贝了msctf.dll和ctfmon.exe过来覆盖掉本机上的同名文件。然后再重新注册一下msctf.dll
regsvr32 /u msctf.dll
regsvr32 /i msctf.dll
再试着运行ctfmon.exe,没有弹出错误;再运行其它刚才弹出错误的程序,也没有问题!
哈哈,搞定!所以估计应该是msctf.dll文件造成的错误!