在WinXP SP2中DrCom上網客戶端與Apache衝突:
在WinXP SP2中Apache表現爲佔用30-80%的CPU,不提供服務,狂寫錯誤文件。
錯誤報告:
(OS 10022)提供了一個無效的參數。 : Child 908: setup_inherited_listeners(), WSASocket failed to open the inherited socket.
網上的解決方法多爲在TCP/IP中取消LMHOSTS,有效!但是點擊DrCom上網客戶端,就會要求重啓,之後故障依舊。
經監控DrCom上網客戶端安裝過程
發現:
安裝Drcom前後修改了註冊表兩處重要位置:
HKEY_LOCAL_MACHINE/SYSTEM/ControlSet001/Services/WinSock2/Parameters/
HKEY_LOCAL_MACHINE/SYSTEM/CurrentControlSet/Services/WinSock2/Parameters/
基本思路:
關機時導入沒裝DrCOM時的註冊表並且寫入成功關機文件;開機Apache以服務啓動後如果關機時寫入的文件存在則導入DrCOM安裝後的的註冊表。文件不存在表示非正常關機,立即重啓。(寫入文件是爲了防止非正常關機時未導入original .reg)
做法:
分別導出Drcom安裝前後修改的兩處註冊表項original .reg和Drcom.reg。然後在gpedit.msc加入:
關機腳本
*1.bat 內容:
@echo off
regedit /s C:/*/original .reg
echo shutdown_well >> C:/*/shut.succ
開機腳本
*2.bat 內容:
@echo off
if not exist C:/*/shut.succ shutdown -r -t 6 -c "由於前次的非正常關機,系統必須立即重啓"
ping 127.0.0.1 -n 25
if exist C:/*/shut.succ regedit /s C:/*/Drcom.reg
if exist C:/*/shut.succ del /s C:/*/shut.succ
注意:以上文件要放再同一文件夾下。由於Apache同SP2也又衝突,所以要在TCP/IP中關閉LMHOSTS查詢。(ping 127.0.0.1 -n 25是爲了延時25秒,可以更具你的機器的具體狀況設置)