最近,由于编程需要,每天都要对着满屏的英文参考文档。英文不是太好的我,决心投一回“懒”,于是安装了金山词霸2006。可是一打开屏幕取词功能,屏幕就一闪一闪的,紧跟着所有程序一个个都关闭了。怎么回事?
上网一查原来早在indows XP Professtional + SP1上,在Visual Studio 2003里就取词失败,导致金山词霸进程崩溃(幸亏了Windows NT内核的进程保护功能,系统没有崩溃)。使用工具分析其原因,是因为金山词霸的鼠标钩子和Visual Studio 2003的鼠标钩子冲突导致的内存泄露瞬间积攒到溢出上限导致的软件崩溃,可能是金山词霸编写中过分的依赖了MFC的字符串功能,却忘记了这种跨边界堆的字符串并不是线程安全的,还好不久金山公司就也推出的SP1补丁,解决了这个问题。
随着Windows XP SP2补丁的出现,又一个问题出现了,这次更严重——屏幕取词导致的Explorer进程崩溃。Explorer进程是IE Explorer和Windows资源管理器得以执行的关键进程,这个进程失败的直接后果就导致了屏幕上一切窗口消失,状态栏消失,图标消失,然后就是这个进程重启导致的内存泄露(在Explorer失败的同时,很多进程的线程肯定是来不及正确退出的),这一次的补丁却没有上一次那么隆重了,仅仅是替换了一个Dll文件XdictGrb.dll,这是一个COM组件,看名字也没看出来它是做什么的,反正是出问题了。从表象上看,可能还是鼠标钩子程序的问题,至于究竟问题出在哪里,就不得而知了。
图1 如何解决呢?
办法一:
请不要将金山词霸安装在中文目录下面,这样会导致金山词霸不能屏幕取词(见图01);
办法二:
如果出现金山词霸、不能查询字典、不能取词等问题,运行程序菜单中的“词霸故障自动修复”,即可自动修复大部分问题;
办法三:
1、重新安装词霸,安装过程中可以选择典型安装。
2、安装 金山词霸相应版本的 SP1补丁包(注意盗版用户打完SP1在同一网内只允许一台机器使用);
3、金山词霸2005在xp系统sp2和Windows2003 R2下屏幕取词出现桌面闪烁的现象。现在,只要您从金山词霸官方网站下载http://support.kingsoft.com/c_1/XdictGrb.dll ,将下载的文件xdictgrb.dll替换词霸安装目录下的同名文件即可轻松解决这个问题(必要时,可以运行 regsvr32 c:\ciba\xdictgrb.dll)。
办法四:
控制面板→系统属性→高级→性能→设置→数据执行保护→选中“为下列选定程序以外的所有程序和服务启用DDP”(不可靠的)→添加C:\WINDOWS\explorer和C:\WINDOWS\system32\rundll32.exe(显示为"Run a Dllas an App")两个程序。 |