Winsock损坏修复

1.QQ能上,但网页无法打开
问题现象:
尝试查看网页时,IE浏览器提示“该页无法显示”,但QQ等即时通讯工具工作正常。
故障原因:
由于病毒原因或软件冲突导致Winsock.dll、Wsock32.dll或Wsock.vxd(VXD只在Windows 9x系统下存在)等文件丢失或损坏。
解决方法:①使用系统命令SFC(Windows 9x)、SFC /Scannow(Windows 2000/XP)检测系统文件并进行修复。
②使用Winsock Fix工具进行自动修复。该工具下载地址为http://www.onlinedown.net/soft/35272.htm

小提示
产生这种现象还可能是因为网络设置错误、域名解析不正常以及错误的防火墙策略造成的,若上面方法不奏效请检查这三个方面。

2.IE无法“在新窗口中打开”
问题描述:单击电子邮件或Web页中的超链接,或右击Web页上的超链接然后单击“在新窗口中打开”时,IE没有反应或打开的新窗口为空白。
故障原因:注册表被恶意网页修改,造成IE相关的动态链接库注册信息丢失。
解决方法:退出正在运行的所有程序,点击“开始→运行”,输入“regsvr32 urlmon.dll”(不含引号),当收到“DllRegisterServer in urlmon.dll succeeded”消息时,单击“确定”即可。
如果问题未得到解决,请对以下每个文件重复注册如下几个DLL文件:Shdocvw.dll、Msjava.dll、Actxprxy.dll、Oleaut32.dll、Mshtml.dll、Browseui.dll、Shell32.dll(Shell32.dll仅限于 Windows 2000/XP)。
注意,安装多个杀毒软件可能会因冲突出现此现象,应尽量避免安装多种杀毒软件。

3.在Windows XP上重装IE的方法
由于IE的安装程序会监视Windows XP的注册表信息,因此直接使用IE6 SP1的安装程序是无法正常安装的。特别是安装有SP2的Windows XP系统,如果强制安装IE6可能会造成系统崩溃。
解决方法:首先,放入Windows XP的安装光盘,打开“注册表编辑器”,找到[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Active Setup\Installed Components\{89820200-ECBD-11cf-8B85-00AA005B4383}],将主键“IsInstalled”的值改为0。接着在“运行”窗口中运行命令“rundll32.exe setupapi, InstallHinfSection DefaultInstall 132 %windir%\inf\ie.inf”(不含引号)即可。

4、系统文件的问题
当与IE有关的系统文件被更换或损坏时,会影响到IE正常的使用,这时可使用SFC命令修复一下,WIN98系统可在“运行”中执行SFC,然后执行扫描;WIN2000/XP/2003则在“运行”中执行sfc /scannow尝试修复。

其中当只有IE无法浏览网页,而QQ可以上时,则往往由于winsock.dll、wsock32.dll或wsock.vxd(VXD只在WIN9X系统下存在)等文件损坏或丢失造成,Winsock是构成TCP/IP协议的重要组成部分,一般要重装TCP/IP协议。但xp开始集成TCP/IP协议,所以不能像98那样简单卸载后重装,可以使用 netsh 命令重置 TCP/IP协议,使其恢复到初次安装操作系统时的状态。具体操作如下:

点击“开始运行”,在运行对话框中输入“CMD”命令,弹出命令提示符窗口,接着输入“netsh int ip reset c:\resetlog.txt”命令后会回车即可,其中“resetlog.txt”文件是用来记录命令执行结果的日志文件,该参数选项必须指定,这里指定的日志文件的完整路径是“c:\resetlog.txt”。执行此命令后的结果与删除并重新安装 TCP/IP 协议的效果相同。

小提示:netsh命令是一个基于命令行的脚本编写工具,你可以使用此命令配置和监视Windows 系统,此外它还提供了交互式网络外壳程序接口,netsh命令的使用格式请参看帮助文件(在令提示符窗口中输入“netsh/?”即可)。

第二个解决方法是修复以上文件,WIN9X使用SFC重新提取以上文件,WIN2000/XP/2003使用sfc /scannow命令修复文件,当用sfc /scannow无法修复时,可试试网上发布的专门针对这个问题的修复工具WinSockFix,可以到 http://zhangyuehong.ys168.com/ 系统补丁目录下载。

5、DNS服务器的问题
当IE无法浏览网页时,可先尝试用IP地址来访问,如用 Bbs.winzheng.com 的http://218.30.80.30 ,如果可以访问,那么应该是DNS的问题,造成DNS的问题可能是连网时获取DNS出错或DNS服务器本身问题,这时你可以手动指定DNS服务(地址可以是你当地ISP提供的DNS服务器地址,也可以用其它地方可正常使用DNS服务器地址。)在网络的属性里进行,(控制面板—网络和拔号连接—本地连接—右键属性—TCP/IP协议—属性—使用下面的DNS服务器地址)。不同的ISP有不同的DNS地址。有时候则是路由器或网卡的问题,无法与ISP的DNS服务连接,这种情况的话,可把路由器关一会再开,或者重新设置路由器。

还有一种可能,是本地DNS缓存出现了问题。为了提高网站访问速度,系统会自动将已经访问过并获取IP地址的网站存入本地的DNS缓存里,一旦再对这个网站进行访问,则不再通过DNS服务器而直接从本地DNS缓存取出该网站的IP地址进行访问。所以,如果本地DNS缓存出现了问题,会导致网站无法访问。可以在“运行”中执行ipconfig /flushdns来重建本地DNS缓存。

6.当间谍软件破坏了你的Windows系统(最讨厌的,也是最常见的)
一般来说,当间谍软件从Windows中清除后,最常见的系统错误就是DNS错误。在这种情况下,用户可以利用IP地址来察看网页,但是用域名就不行了。如果试图在IE中使用域名访问站点,IE会显示“该页无法显示”。

要知道为什么当间谍软件被清除后会有如此后果,你应该先了解windows是如何让你的电脑与Internet相连的。也许你知道,Windows通过利用TCP/IP协议与互联网通信,而Windows利用TCP/IP协议的机制被称作Winsock。

Winsock并不只是一个单独的文件,而是通过一系列分层的结构实现TCP/IP协议的,就像一个链子。如果用户将链子中的一环移开,Winsock的功能就会受到影响,轻则Internet连接出现某种问题,重则使电脑断开与Internet的连接。

某些间谍软件利用了Winsock,这样做有不少好处。首先,间谍软件看上去就像操作系统的一部分,因此比其它类的间谍软件更难被发现。第二,如果间谍软件核心进入了Winsock链,那么它就获得了相当大的权力,可以随意监控电脑与互联网的通信。最后,如果间谍软件核心能够骗过Windows,让它相信其是系统的一部分,那么这个间谍软件就不仅能在当前用户下工作了。因为在大多数情况下,操作系统和它的组件在该电脑的所有用户中都是有权限的。

因此事情就变得比较棘手了,比如你可以想象间谍软件已经渗入到操作系统并进入Winsock链中,而此时运行间谍软件清除工具虽然可以将间谍软件清除掉,但同时也破坏了winsock链的正常状态,从而影响了电脑与Internet的连接。在这种情况下,很多人都会选择重新安装Windows系统以便覆盖目前受损的系统,因为重新安装系统可以将丢失的系统文件补上,这样应该可以让Winsock链恢复正常。不过很不幸,当重新安装后你会发现,问题仍然没有得到解决。为什么呢?

这是由于Windows是一种可以升级和更新的系统,而Winsock链上的各个文件并不属于Windows的核心文件,而是通过注册表调用的。当用户重新安装操作系统覆盖原来的操作系统时,Setup程序会覆盖系统文件,但注册表中所有客户自行定义的内容则不会被修改。这意味这假如间谍软件在两个Winsock组件间插入了内容,那么就算间谍软件模块被清除了,并且系统也重装了,但注册表依然会调用这个间谍软件模块。

解决这个问题的唯一办法就是重建Winsock链并纠正注册表中与Winsock相关的内容。需要注意的是,修改注册表具有一定风险,一个错误的修改可能会导致系统或者应用程序损坏。因此在做以下操作前,我强烈建议用户先备份注册表。

要手动修改Winsock,需要在注册表中找到并删除以下两个键:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock2

删除这两个键后,你需要关闭注册表编辑器并重新启动电脑。当重启动时,Windows会在注册表中搜寻你刚才删除的那两个键,当发现找不到该键时,系统就会自行建立正确的键,这个问题也就得到了解决。

当系统重启后,你需要重新安装TCP/IP协议。右键点击网络连接并选择Properties 项,然后系统会列出连接协议列表。现在点击Install按钮并选择Protocol,然后点击Add。之后点击Have Disk并输入C:\Windows\inf(假设C:\Windows是你的Windows系统路径)。从列表中选择Internet Protocol (TCP/IP)项,并点击OK。重新启动电脑。

虽然这种方法可以修复错误,不过对一般用户来说可能有些困难。

下面我介绍一种更简单的修复Winsock错误的方法。
实际上,它是某个电脑高手为了快速修复这一错误而制作的免费小工具,名为Winsock Fix,由于它也是利用修改注册表的方式完成修复错误的工作,因此我依然建议用户在使用前备份注册表(但此方案虽不能100%凑效,但最起码能90%以上有效吧)。
---------------------------
要确定症状是否由 Winsock2 注册表项的问题引起,请使用以下方法。
方法 1:使用 Netdiag 工具
要使用 Netdiag 工具,您必须安装 Microsoft Windows XP 支持工具。为此,请按照下列步骤操作。

注意:? 如果已经安装了支持工具,请直接执行本部分的第二步。
? 如果未安装支持工具并且没有 Windows XP 安装 CD,请转到“方法 2”。
1. 插入 Windows XP 安装 CD,然后找到 Support\Tools 文件夹。
2. 双击“Setup.exe”文件。
3. 按照屏幕上的步骤操作,直至看到“请选择安装类型”屏幕。
4. 在“请选择安装类型”屏幕上,单击“完全”,然后单击“下一步”。
安装完成后,请按照下列步骤操作:1. 单击“开始”,单击“运行”,键入 Command,然后单击“确定”。
2. 键入 netdiag /test:winsock,然后按 Enter。
Netdiag 工具将返回若干网络组件(包括 Winsock)的测试结果。要了解该测试的更多详细信息,请在以下 netdiag 命令结尾处添加 /v:netdiag /test:winsock /v
方法 2:使用 Msinfo32 程序
注意:只有在没有 Windows XP 安装 CD 并且未安装支持工具时,才应使用此方法。 1. 单击“开始”,单击“运行”,键入“Msinfo32”,然后单击“确定”。
2. 展开“组件”,展开“网络”,然后单击“协议”。
3. “协议”下有 10 个节。如果 Winsock2 注册表项未损坏,则节标头应包含以下名称: ? MSAFD Tcpip [TCP/IP]
? MSAFD Tcpip [UDP/IP]
? RSVP UDP Service Provider
? RSVP TCP Service Provider
? MSAFD NetBIOS [\Device\NetBT_Tcpip...
? MSAFD NetBIOS [\Device\NetBT_Tcpip...
? MSAFD NetBIOS [\Device\NetBT_Tcpip...
? MSAFD NetBIOS [\Device\NetBT_Tcpip...
? MSAFD NetBIOS [\Device\NetBT_Tcpip...
? MSAFD NetBIOS [\Device\NetBT_Tcpip...
如果名称与此列表中的内容有任何不同,则说明 Winsock2 注册表项已经损坏,或者您安装了第三方加载项(如代理服务器软件)。
如果安装了第三方加载项,则加载项的名称将替换列表中的字母“MSAFD”。

如果列表的内容超过 10 个节,则说明安装了第三方加载项。

如果少于 10 个节,则说明缺少信息。

注意:这些条目所代表的是仅装有 TCP/IP 协议的安装。您可能有一个正在工作的 Winsock,如果安装了另一个协议,则可能会看到其他条目。例如,如果安装 NWLink IPX/SPX,您将另外看到 7 个节,也就是总共 17 个节。下面的示例展示了一个新的节标头:
MSAFD nwlnkipx [IPX]
通过安装 NWLink IPX/SPX 创建的每个新节也以“MSAFD”开头。因此,仍然只有两个不以这些字母开头的节。

如果 Netdiag 测试失败,或者,如果通过查看 Msinfo32 信息确定了 Winsock 的损坏,您必须使用下一部分的步骤修复 Winsock2 注册表项。
回到顶端

如何恢复损坏的 Winsock2
带 Service Pack 2 的 Windows XP
要在安装了 Windows XP Service Pack 2 (SP2) 的情况下修复 Winsock,请在命令提示符处键入 netsh winsock reset,然后按 Enter。

注意:运行此命令后请重新启动计算机。此外,对于运行 Windows XP SP2 的计算机,还有一个新的 netsh 命令可用于重新构建 Winsock 注册表项。有关更多信息,请访问下面的网站:
http://www.microsoft.com/china/t ... ntain/sp2netwk.mspx (http://www.microsoft.com/china/t ... tain/sp2netwk.mspx)
警告:在运行 netsh winsock reset 命令时,访问或监视 Internet 的程序(如防病毒程序、防火墙或代理客户端)可能会受到不良影响。如果执行此解决方案后某个程序无法正常工作,请重新安装该程序以恢复功能。

注意:如果这些步骤都无法解决问题,请执行下一部分的步骤。
不带 Service Pack 2 的 Windows XP
如果要在未安装 Windows XP SP2 的情况下修复 Winsock,请删除损坏的注册表项,然后重新安装 TCP/IP 协议。
第 1 步:删除损坏的注册表项
警告:如果使用注册表编辑器或其他方法错误地修改了注册表,有可能会导致严重问题。这些问题可能需要重新安装操作系统才能解决。Microsoft 不能保证可以解决这些问题。修改注册表需要您自担风险。

有关如何备份注册表的更多信息,请单击下面的文章编号,以查看 Microsoft 知识库中相应的文章:
322756 (http://support.microsoft.com/kb/322756/ ) 如何在 Windows XP 和 Windows Server 2003 中备份、编辑和还原注册表
1. 单击“开始”,然后单击“运行”。
2. 在“打开”框中,键入“regedit”,然后单击“确定”。
3. 在注册表编辑器中,找到以下注册表项,右键单击每一项,然后单击“删除”:
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock2
4. 当提示您确认删除时,单击“是”。
注意:删除 Winsock 注册表项后请重新启动计算机。这样做可以让 Windows XP 操作系统为这两个注册表项创建新的 shell 条目。如果在删除 Winsock 注册表项后未重新启动计算机,则下一步将无法正常进行。
第 2 步:安装 TCP/IP
1. 右键单击网络连接,然后单击“属性”。
2. 单击“安装”。
3. 单击“协议”,然后单击“添加”。
4. 单击“从磁盘安装”。
5. 键入 C:\Windows\inf,然后单击“确定”。
6. 在可用协议列表中,单击“Internet 协议 (TCP/IP)”,然后单击“确定”。
7. 重新启动计算机。