一切福田,不離方寸,從心而覓,感無不通。

Windows 2003 严重无法上网问题解决

我的 Windows 2003 连续运行 28 天 18 个小时了,还是比较稳定的(期间杀了 explorer.exe 进程两次,平均起来每次能用 10 天,还是不错的,比 XP 强,呵呵)。
 
今天突然心血来潮重启了一下,结果,出问题了!严重地不能上网,开始“网络连接”里面竟然是空的!我在“设备管理器”中把网卡卸载重新识别,终于有了“本地连接”,但是还是无法上网:
  • 首先是重启后很慢,接着 IPSec 服务报错;
  • 然后几乎所有跟网络有关的服务都不能启动,如 IIS、网络打印机等,而且出错原因千奇百怪(具体见后);
  • 所有需要网络的程序几乎都不能启动,一运行就报 winsock 之类的错误直接退出;
  • IP 无法获取,自行指定也不行,始终是 0.0.0.0
以下是事件查看器的主要报错信息:
 
事件类型: 错误
事件来源: IPSec
事件 ID: 4292
描述:
IPSec 驱动程序进入了阻止模式。IPSec 将丢弃所有未经启动时 IPSec 策略例外所允许的入站和出站 TCP/IP 网络通讯。
事件类型: 信息
事件来源: IPSec
事件 ID: 4295
日期:  2007-6-26
描述:
IPSec 驱动程序以 Bypass 模式启动。在此计算机启动时没有 IPSec 安全性会被应用到此计算机。如果配置了IPSec 策略,它们将在  IPSec 服务启动后被应用到此计算机。
 
事件类型: 错误
事件来源: Service Control Manager
事件 ID: 7023
描述:
IPSEC Services 服务因下列错误而停止:
无法启动 IPSEC Services 服务。
错误 10107:
从来不应失败的系统调用失败了。
事件类型: 警告
事件来源: Dhcp
事件 ID: 1004
描述:
DHCP 客户端服务正在关闭。出现了以下错误 :
从来不应失败的系统调用失败了。
 
事件类型: 错误
事件来源: Tcpip
事件 ID: 4191
描述:
IP 无法打开适配器 TCPIP\Parameters\Adapters\NDISWANIP 的注册表项。 本适配器上的界面不会初始化。
 
事件类型: 错误
事件来源: Service Control Manager
事件 ID: 7023
描述:
IPSEC Services 服务因下列错误而停止:
从来不应失败的系统调用失败了。
 
事件类型: 错误
事件来源: Service Control Manager
事件 ID: 7001
描述:
与 World Wide Web Publishing Service 服务相依的 HTTP SSL 服务因下列错误而无法启动:
在多字节的目标代码页中,没有此 Unicode 字符可以映射到的字符。
 
事件类型: 错误
事件来源: Service Control Manager
事件 ID: 7023
描述:
Windows Firewall/Internet Connection Sharing (ICS) 服务因下列错误而停止:
应用程序没有调用 WSAStartup,或者 WSAStartup 失败。
折腾了很久,最后在网上找到了答案,原来是 TCP/IP 协议出问题了,需要删除并重新安装 TCP/IP 协议。
 
我把自己的解决过程也记录如下,供需要的人参考:
 
1、打开注册表编辑器,在注册表中删除以下两个键(删除前最好先导出备份):
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock2
 
2、在系统目录的 inf 目录里面找到 nettcpip.inf 文件,打开,找到:
[MS_TCPIP.PrimaryInstall]
    ; TCPIP has properties to display
    Characteristics = 0xA0 ; NCF_HAS_UI | NCF_NOT_USER_REMOVABLE
把此处的 0xA0 改为 0x80 保存退出(该设置就是允许用户修改TCP/IP协议)
 
3、打开“本地连接”的属性——安装——添加协议——从磁盘安装,找到刚刚保存的 nettcpip.inf 文件,按“确定”后,回到列表,选择最后一项“Internet 协议 (TCP/IP)”(左侧没有图标的,注意不是那个“Microsoft TCP/IP 版本 6”),会提示没有数字签名,按确定安装即可。
 
经过这一步之后,又返回网络连接的窗口,这个时候,选择“TCP/IP”后,那个“卸载”按钮已经是可用的了(未做这一步之前是灰色的)。点这个“卸载”按钮来把 TCP/IP 协议删除,然后重启一次机器。
 
4、重启后,把 nettcpip.inf 文件改回来,再照着第3步,重新安装一次 TCP/IP 协议(此时它不会再提示没有数字签名了,呵呵)。
 
5、安装好协议后重启一次,重新设置“本地连接”的连接属性,就可以联网了,如果还不行,就再重启一下,呵呵。
 
我深刻以为出这样的问题,是由于我的硬盘老化,导致 TCP/IP 协议相关数据损坏了,所以我赶紧把硬盘 ChkDsk 了,呵呵。