"Procedure EntryPoint XXX Not Found In WS2_32.dll"的解决方案

     库信息描述

     Windows Sockets应用程序接口,用于支持Internet以及其他网络应用,存在于System32文件夹下。

    

     问题描述 

     常常一些运行良好的应用程序会突然Crash掉,且抛出诸如"Procedure EntryPoint XXX Not Found In WS2_32.dll"类似的错误信息。

 

     原因分析 

     从异常信息可以看出,应用程序所调用的过程函数在WS2_32.dll没有找到,所以抛出了异常。这一般出现在两种情况下:

     1) 系统所提供的WS2_dll的版本过久,而应用程序依赖更新的版本中新添加的过程函数

     2) 可能由于安装其他应用程序,更新了WS2_DLL.dll造成的,也就是所谓的"DLL Hell"

 

     解决方案

     由于问题的症结在于ws2_dll.dll,所以我们就提供一个相对较新且兼容性良好的ws2_dll.dll来替换,文章最后会提供一个5.1.2600版本的下载链接。

     由于ws2_dll.dll是个很重要的系统库,所以并不是我们想象的那样想替换就能替换。使用微软的进程管理工具(Process Explorer)可以看出,大多数的系统进程都在使用这个库所提供的功能,如Winlogon.exe、explorer.exe,所以想直接通过Kill掉这些进程来达到替换的目的基本上行不通。

    所以这儿我们可以使用一个系统文件替换命令行工具Replacer.bat,非常好用的一个批处理工具,感谢工具作者的辛勤劳动,工具稍后也提供下载链接。

    工具使用方法很简单,运行该批处理后,其会在当前文件夹下面生成一个临时文件,这个不需理会,主要是为了备份替换之前的那个系统文件。接着第一个就是将你需要替换的那个旧的系统文件直接拖进窗口中,作用相当于输入系统文件全路径。接着会提示你把待替换的系统文件拖进窗口,拖进去后回车。可能会提示你是否确定,回车继续即可。替换过程系统会重启,重启后系统文件就已经被替换掉了,且被替换的那个系统文件被重命名为.bak结尾的文件,且还在原来的位置。

 这样,通过系统文件的替换就可以解决上述问题。    

   系统文件替换工具: /Files/royenhome/Replacer.zip 

   ws2_dll下载:  

   备注:上面的工具与dll版本都有些旧,如果不能解决你的问题,请试着下更新的版本试试。

 

posted @ 2010-09-02 14:31  royen  阅读(1664)  评论(0编辑  收藏  举报