DLL系统文件冲突的解决

发表于:2007-06-08来源:作者:点击数: 标签:
大家应该都有过这样的经验,当你安装一些软件的时候,这些软件要安装与你的系统不同版本的以DLL为后缀名的系统文件。但问题就随之而来了,有些用的很好的软件总是出错,更严重的连 WINDOWS 自身都会出现问题,系统总是说XXX.DLL出现不明问题而不能运行或出错



大家应该都有过这样的经验,当你安装一些软件的时候,这些软件要安装与你的系统不同版本的以DLL为后缀名的系统文件。但问题就随之而来了,有些用的很好的软件总是出错,更严重的连WINDOWS自身都会出现问题,系统总是说XXX.DLL出现不明问题而不能运行或出错。这时我们应该如何解决呢?是从新安装系统吗?还是从此不再使用这个软件?NO!NO!NO!现在就让我来告诉大家一个解决.DLL冲突的方法。
为了说明问题,我们必须要有先了解Windows系统的另一种可执行文件.DLL,DLL是Dynamic Link Library(动态链接库)的缩写,DLL文件是Windows的基础(所有的API函数都是在DLL中实现的)。它本身并没有程序逻辑,使是由多个功能函数构成,不能独立运行,必须由其它进程加载并调用的。了解这些后我们就好分析了,安装这些“问题”软件的时候,他们把系统里一些DLL文件用自身所带的新版本和旧版本的DLL文件覆盖了,这样能够保证它自身的运行正常。但问题就出在这,我们系统里的其他一些软件和系统本身需要以前版本的DLL文件才能正常运行,现在的版本变了,出错就在所难免了。这时笔者就想能不能把不同版本的DLL文件都放在同一个系统里面,使不同的软件调用不同的版本互相不干扰,这样这些软件不就可以和平共处了吗!接下来笔者就开始着手如何让两个不同的版本的DLL在一个系统中共存的问题。
这里我们以IBM语音识别系统4.0版为例给大家讲解。这个软件在windows98第一版中一直运行良好,但安装在Windows98第二版中就会出现问题。表现为使用该软件后系统中的其它软件如IE、OE、记事本就会报“KERNEL32.dll和OLEAUT32.DLL还有MFC42.DLL发现不明问题无法使用”这就是明显的DLL系统文件冲突。发生冲突的DLL文件是kernel32.dll,oleaut32.dll和mfc42.dll这三个文件。这时我们可以到X:\windows\system(x为windows所在盘符)中找到这三个文件并把它们复制下来,如果找不到这三个文件就必须从/开始/设置/文件夹选项/查看/在隐藏文件里选择显示所有文件,然后就可以找到了。接下来就是最关键的地方了,一般每个安装的软件都会在自己的根文件夹里有一个用来存放DLL文件的专门文件夹,文件夹的名字不一定,要自己找。IBM语音识别系统的这个文件夹是x:\ViaVoice中的bin文件夹,把刚才复制的三个文件粘贴到这个文件夹里。然后用系统文件检查器(打开的方法是开始/程序/附件/系统工具/系统信息/工具/系统文件检查器)选择从安装光盘提取一个文件,把上面的三个文件分别指定到你要恢复的系统文件框里。注意:恢复的时候要使用Windows安装光盘。点开始,在“还原自”里写你的windows安装盘地址,在“将文件保存到”里写x:\windows\system,点确定开始恢复文件。这样我们就可以恢复IE、OE、记事本这些软件所需的DLL文件了。
重新启动计算机后看看以前不能运行的软件现在是不是又像以前那样富有活力了。除了语音识别系统外其它很多的软件都可以用这种方法来解决DLL冲突的问题,成功与否主要是看你能不能找到这个软件在根文件夹存放DLL文件的文件夹。这些软件一般启动的时候都是首先从这个文件夹里寻找他们所需的DLL文件,然后才到Windows系统里SYSTEM文件夹中寻找。这样的话我们就可以实现不同版本的DLL文件在同一系统里供不同软件调用了。从这件事情可以看出,电脑中有很多事情都不像我们想象中的那样复杂,只要我们大家都多多动脑筋思考问题,很多事情其实很简单。

原文转自:http://www.ltesting.net