【IT168 专稿】对于我们网管员来说,最主要的工作就是保证企业内部网络和服务器的正常运行。一般的网络故障可以通过ping三步法来解决,借助ping 127.0.0.1和网卡地址以及网关地址来判断问题所在。但是最近笔者却遇到了一个非常规的故障问题,解决问题的步骤也和平时有很大差别,今天就写出来和各位IT168的读者分享。
故障起因:
笔者接到一位员工的电话,声称自己的计算机无法正常访问网络了。主要问题就是所有网络工具无法使用。对于一些简单的网络故障来说,笔者还是可以非常轻松解决的。于是亲自查看该计算机发现启动和运行程序没有任何异样,但是卡巴斯基杀毒软件不能正常启动了,开qq程序却弹出一个空白的MessageBox,然后就没有任何反应了,想上网查一下是什么原因,却发现浏览器什么页面也打不开,也就是说所有程序都无法访问网络。接下来笔者尝试用ping网关地址的方法来检测连通情况,结果却得到了和以往都不同的信息,在命令提示行窗口中显示出了
“Unable to initialize Windows Sockets interface, error code 0”的提示,具体意思就是不能够初始化windows sockets的接口,错误代码为0。
故障解决:
笔者通过另外一台计算机查看了故障提示含义,原来这个CODE 0是WSAStartup不能初始化的错误代码,也就是说该计算机的socket出问题了。之后尝试卸载网卡,重新安装驱动,问题依然没有解决。看来不是硬件问题,于是将解决问题的关键定位到软件和系统。之后通过google搜索
发现了解决方案,下面将解决步骤写出来。
第一步:出现“Unable to initialize Windows Sockets interface, error code 0”的提示是因为本地系统的注册表存在问题造成的。而根据提示描述我们可以知道是windows Sockets出现问题,所以在注册表中寻找windows Sockets对应的信息。
第二步:在没有问题的计算机上通过“开始->运行->输入regedit后回车”进入注册表编辑器。
第三步:在注册表编辑器中找到HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\WinSock2\Parameters\Protocol_Catalog9\Catalog_Entries键值,在该键值下应该有十几项,每一个项目对应一个TCP/IP接口,这些接口有一个出问题就会造成网络故障。当然项目数
也随着机器的不同而有很大区别,少则十几个,多则几十个。(如图1)
图1 点击放大 |
第四步:我们把正常计算机注册表中对应的此键值导出,方法是在该键值上点右键选择“导出”。(如图2)
图2 点击放大 |
第五步:在导出范围处一定要选择“所选分支”,而不是“全部”,之后为保存的文件名起一个文件即可。(如图3)
图3 |
第六步:之后我们把这个保存的注册表文件复制到有问题的计算机上,然后通过双击运行的方法将其导入到有问题机器的注册表中,选择“是
”按钮完成导入工作。(如图4)
图4 |
关于Unable to initialize Windows socket interface, error code 6的解决方法:
当然笔者在寻找本次故障解决方法的同时还发现原来Unable to initialize Windows socket interface的网络故障还是比较常见的,上面我们对error code 0进行了故障排除,下面介绍如果ping网关时出现Unable to initialize Windows socket interface, error code 6怎么办!
(1)error code 6故障现象:
error code 6故障现象主要体现在以下两个方面,第一就是在尝试使用 Internet Explorer浏览Internet站点时,可能会收到以下错误消息——The page cannot be displayed。第二当在命令提示符下使用“ping”命令时,您可能会收到以下错误消息Unable to initialize Windows socket interface, error code 6。即使你能够通过使用拨号网络成功连接到Internet服务提供商(ISP),也可能会发生这些错误消息。
(2)故障原因:
同样是因为注册表出错引起的,在注册表中HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock2键值丢失或损坏。
(3)解决故障:
解决故障的步骤和上面所说的CODE 0错误类似,不过要相对复杂些。
第一步:在出问题的计算机上启动“注册表编辑器”(Regedit.exe)。
第二步:找到并单击下面的注册表项HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock2
第三步:导出Winsock2项以将其备份,然后单击Winsock2项并按DELETE 键将其删除。最后确认对此项的删除,然后退出“注册表编辑器”。(如图5)
图5 |
第四步:卸载拨号网络,方法是启动控制面板,然后双击添加/删除程序。单击Windows安装程序选项卡。单击通讯,单击详细资料,然后单击以清除拨号网络复选框。确定后就完成删除拨号网络的操作。
第五步:卸载拨号网络之后,重新启动计算机
第六步:按照前面介绍的卸载拨号网络的方法,然后在通讯标签中单击详细资料,然后单击以选中拨号网络复选框。确定后重新启动计算机。之后就会发现计算机已经恢复正常了,HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock2键值下的所有项和信息都被自动修复了。
用winsockfix修复WINSOCKS故障:
实际上除手工修复以上问题外我们还可以通过第三方工具来解决,这里笔者向大家推荐一个名为winsockfix的程序,通过他可以自动备份和修复本机当前的winsocks键值。
winsockfix小档案:
软件大小:1.36M
软件语言:英文版
适用平台:2000/XP/2003
下载地址:http://www.onlinedown.net/soft/35272.htm
第一步:下载winsockfix.exe后直接运行。
第二步:该软件有三个按钮可以选择,FIX按钮可以帮助本地系统自动修复WINSOCKS键值。
第三步:当然在点FIX按钮之前建议各位读者先使用REG-BACKUP按钮备份当前注册表中WINSOCKS键值。(如图6)修复完毕后我们重新启动计算机就可以解决之前遇到的网络故障了。
图6 |
总结:
本文介绍了两种由于注册表问题造成网络出现连通故障的案例,实际上对于ping网关出现Unable to initialize Windows socket interface的提示信息时我们都可以通过这些方法来完成,第一个方法具有一定的局限性,不一定对每个计算机都起作用,而第二个方法则比较普遍,他会重新建立所有出问题的键值。