Tuesday, October 28, 2008

How to recover from Winsock2 corruption in Windows XP

วิธีการแก้ไขปัญหา Winsock บน Windows XP
Winsock นั้นเป็นองค์ประกอบหนึ่งของการใช้งานโปรโตคอล TCP/IP บนระบบวินโดวส์ ในกรณีที่ Winsock เกิดการคอรัปท์หรือเสียหายจะส่งผลให้ยูสเซอร์ไม่สามารถใช้งานระบบเครือข่ายอินเทอร์เน็ตได้ โดยวินโดวส์จะแสดงข้อความแจ้งความผิดพลาดเมื่อทำการใช้งานต่างๆ ตามกรณี ดังนี้

ข้อควรระวัง: บทความนี้มีการดำเนินการแก้ไขรีจิสตรี ดังนั้น เพื่อให้สามารถทำการเรียกคืนรีจิสตรี ได้ในกรณีเกิดปัญหา โปรดสำรองรีจิสตรีไว้ก่อนที่จะแก้ไข

1. เมื่อทำการรันคำสั่ง Ipconfig /release หรือ Ipconfig /renew วินโดวส์จะแสดงข้อผิดพลาดดังต่อไปนี้:
An error occurred while renewing interface 'Internet': An operation was attempted on something that is not a socket.

2. เมื่อทำการรัน ipconfig /renew วินโดวส์จะแสดงข้อผิดพลาดดังต่อไปนี้:

ข้อผิดพลาดที่ 1
An error occurred while renewing interface local area connection: an operation was attempted on something that is not a socket. Unable to contact driver Error code 2.

ข้อผิดพลาดที่ 2
The operation failed since no adapter is in the state permissible for this operation.

ข้อผิดพลาดที่ 3
The attempted operation is not supported for the type of object referenced.

3. เมื่อเปิดโปรแกรม Internet Explorer วินโดวส์จะแสดงข้อผิดพลาดดังต่อไปนี้:
The page cannot be displayed

4. เมื่อใช้งานเครื่องคอมพิวเตอร์ วินโดวส์จะแสดงข้อผิดพลาดดังต่อไปนี้:
Initialization function INITHELPERDLL in IPMONTR.DLL failed to start with error code 10107

5. เมื่อทำการสร้าง dial-up connection วินโดวส์จะแสดงข้อผิดพลาดดังต่อไปนี้:
Error 720: No PPP Control Protocols Configured

6.ใน Device Manager เมื่อคลิก Show Hidden Devices ไดรเวอร์ TCP/IP Protocol Driver มีสถานะเป็น Disabled ในส่วน Non-Plug and Play drivers และได้รับรหัสข้อผิดพลาด 24

การแก้ไขปัญหา Winsock
ก่อนอื่นต้องทำการตรวจสอบการทำงานของ Winsock ก่อนว่ามีปัญหาหรือไม่ โดยวิธีการตรวจสอบว่าคีย์ Winsock2 เสียหายหรือไม่ ทำได้โดยใช้วิธีการใดวิธีการหนึ่งดังต่อไปนี้

วิธีที่ 1: ใช้โปรแกรม Netdiag
การใช้ Netdiag ต้องยกเลิกการติดตั้ง Support Tools ของ Windows XP เสียก่อน โดยให้ดำเนินการตามขั้นตอนดังต่อไปนี้

หมายเหตุ:
• หากไม่ได้ติดตั้ง Support Tools ให้ไปที่ขั้นตอนที่ 2 ในส่วนนี้
• หากไม่ได้ติดตั้ง Support Tools และไม่มีแผ่นซีดีติดตั้ง Windows XP ให้ใช้วิธีที่ 2

ขั้นตอนที่ 1
1. ใส่แผ่นซีดีติดตั้ง Windows XP แล้วไปยังโฟลเดอร์ Support\Tools
2. ดับเบิลคลิกไฟล์ Setup.exe
3. จากนั้นทำตามขั้นตอนต่างๆ บนหน้าจอจนกระทั่งถึงหน้า Select An Installation Type
4. ที่หน้าจอ Select An Installation Type ให้คลิก Complete แล้วคลิก Next

ขั้นตอนที่ 2
เมื่อทำการติดตั้งเสร็จเรียบร้อยแล้ว ให้ทำตามขั้นตอนต่างๆ ดังต่อไปนี้:
1. คลิก Start คลิก Run พิมพ์ Command แล้วคลิก OK
2. พิมพ์ netdiag /test:winsock แล้วกด ENTER

โปรแกรม Netdiag จะแสดงผลการทดสอบสำหรับองค์ประกอบเน็ตเวิร์กหลายๆ อย่างรวมทั้ง Winsock หากต้องการรายละเอียดเพิ่มเติมเกี่ยวกับการทดสอบให้ใช้พารามิเตอร์ /v ต่อท้ายคำสั่ง netdiag: netdiag /test:winsock /v

วิธีที่ 2: ใช้โปรแกรม Msinfo32
วิธีการตรวจสอบว่าคีย์ Winsock2 เสียหายหรือไม่ โดยใช้โปรแกรม Msinfo32 นั้น จะใช้ได้เฉพาะเมื่อไม่มีแผ่นซีดีติดตั้ง Windows XP และไม่ได้ติดตั้ง Support Tools บนระบบ ตามขั้นตอนดังนี้

1. คลิก Start คลิก Run พิมพ์ Msinfo32 แล้วคลิก OK
2. ในหน้า System Information ให้คลิกขยาย Components ขยาย Network แล้วคลิก Protocol
3. ภายใต้ Protocol จะมีหัวข้อของส่วนต่างๆ 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" โดยมีเพียง 2 หัวข้อเท่านั้นที่ไม่ได้เริ่มต้นชื่อด้วยอักขระต่างๆ เหล่านั้น

หากการทดสอบ Netdiag ล้มเหลว หรือหากผลการตรวจสอบพบว่าเกิดความเสียหายกับ Winsock โดยการดูที่ Msinfo32 จะต้องแก้ไขคีย์ Winsock2 โดยการใช้ขั้นตอนต่างๆ ในส่วนถัดไป

วิธีการแก้ไขปัญหาที่เกิดจากไฟล์ Winsock2 เสีย
วิธีการแก้ไขปัญหาที่เกิดจากไฟล์ Winsock2 เสียนั้น แบ่งออกเป็น 2 กรณี คือ การแก้ไขจากการเสียหายของไฟล์ Winsock2 บน Windows XP Service Pack 2 และ การแก้ไขจากการเสียหายของไฟล์ Winsock2 บน Windows XP ที่ไม่ได้ติดตั้ง SP2

• การแก้ไขปัญหาที่เกิดจากไฟล์ Winsock2 เสียบน Windows XP Service Pack 2
วิธีการแก้ไขปัญหาที่เกิดจากไฟล์ Winsock2 เสียบน Windows XP Service Pack 2 (SP2) ไว้ ให้พิมพ์ netsh winsock reset ที่คอมมานด์พรอมท์แล้วกดปุ่ม ENTER

หมายเหตุ: หลังจากทำการรันคำสั่งแล้วให้ทำการรีสตาร์ทเครื่องคอมพิวเตอร์ นอกจากนี้ สำหรับคอมพิวเตอร์ที่รัน Windows XP SP2 สามารถใช้ netsh ทำการสร้างคีย์ Winsock ใหม่ได้ โดยสามารถอ่านรายละเอียดเพิ่มเติม ได้ที่เว็บไซต์ต่อไปนี้: http://www.microsoft.com/technet/prodtechnol/winxppro/maintain/sp2netwk.mspx

คำเตือน: การรันคำสั่ง netsh winsock reset นั้น อาจมีผลกระทบกับโปรแกรมต่างๆ เช่น โปรแกรมป้องกันไวรัส ไฟร์วอลล์หรือไคลเอนต์พร็อกซี่ เป็นต้น

หากมีโปรแกรมที่ทำงานได้ไม่ถูกต้องหลังจากทำการแก้ปัญหาด้วยวิธีการด้านบน อาจจะต้องทำติดตั้งโปรแกรมนั้นๆ ใหม่เพื่อให้ทำงานได้อย่างถูกต้อง

หมายเหตุ: หากขั้นตอนเหล่านี้ไม่สามารถแก้ปัญหาได้ ให้ทำตามขั้นตอนต่างๆ ในส่วนถัดไป

• การแก้ไขปัญหาที่เกิดจากไฟล์ Winsock2 เสียบน Windows XP ที่ไม่ได้ติดตั้ง Service Pack 2
การแก้ไขปัญหาที่เกิดจากไฟล์ Winsock2 เสียบน Windows XP ที่ไม่ได้ติดตั้ง Service Pack 2 ให้ลบรีจิสตรีคีย์ที่เสียหายทิ้ง แล้วติดตั้งโปรโตคอล TCP/IP ใหม่ ตามขั้นตอนดังนี้

• ขั้นที่ 1: ลบรีจิสตรีคีย์ที่เสียหาย
ข้อควรระวัง: บทความนี้มีการดำเนินการแก้ไขรีจิสตรี ดังนั้น เพื่อให้สามารถทำการเรียกคืนรีจิสตรี ได้ในกรณีเกิดปัญหา โปรดสำรองรีจิสตรีไว้ก่อนที่จะแก้ไข

1. คลิก Start และคลิก Run
2. ในช่อง Open ให้พิมพ์ regedit และคลิก OK
3. ในหน้าต่าง Registry Editor หาคีย์ต่างๆ ดังต่อไปนี้ จากนั้นคลิกขวาที่แต่ละคีย์ แล้วคลิก Delete
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock
HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Winsock2


4. เมื่อระบบพรอมต์ให้ยืนยันการลบ ให้คลิก Yes

หมายเหตุ: หลังจากทำการลบคีย์ Winsock แล้ว ให้ทำการรีสตาร์ทเครื่องคอมพิวเตอร์ เพื่อให้ระบบปฏิบัติการ Windows XP สร้างรายการเชลล์ใหม่สำหรับคีย์ทั้งสอง หากไม่ทำการรีสตาร์ทเครื่องคอมพิวเตอร์หลังจากลบคีย์ Winsock ขั้นตอนถัดไปจะทำงานไม่ถูกต้อง

• ขั้นที่ 2: ทำการติดตั้ง TCP/IP
1. คลิก Start คลิก Control Panel แล้วคลิก Network Connection
2. คลิกขวาที่ network connection แล้วคลิก Properties
3. คลิก Install
4. คลิก Protocol แล้วคลิก Add
5. คลิก Have Disk
6. พิมพ์ C:\Windows\inf แล้วคลิก OK
7. ในลิสต์ของโปรโตคอลต่างๆ ที่ใช้ได้ ให้คลิก Internet Protocol (TCP/IP)แล้วคลิก OK
8. ทำการรีสตาร์ทคอมพิวเตอร์

วิธีการนี้สามารถใช้ได้กับ
• Microsoft Windows XP Home Edition
• Microsoft Windows XP Professional Edition
• Microsoft Windows Server 2003 Standard Edition
• Microsoft Windows Server 2003 Enterprise Edition

ลิงค์ที่เกี่ยวข้อง
How to determine and to recover from Winsock2 corruption in Windows Server 2003, in Windows XP/Vista

Winsock2 corruption Winsock KB811259

© 2008 TWA Blog, All Rights Reserved.

2 Comment:

Npatsa said...

รบกวนด้วยนะครับ
ผมใช้ Windows Server 2003 เป็นเครื่องแม่ข่ายครับ
แต่ไม่สามารถแสดงชื่อ คอมพิวเตอร์ เครื่องอื่นๆ ที่เป็นเครื่องลูกได้เลยครับ
ผมเข้าทาง My Network Places ครับ
โดยมันจะแสดงข้อความดังนี้ครับ
http://zbf2jq.bay.livefilestore.com/y1p--ClHsQWccPX38TlHPdWArRcp-BTeYlZWhFrMockR0WaOKtPSDS9ARF0alEsTfueQwJShG0pVQd3VCL60nZW4CNXZDztfHlc/error-network.JPG
หมายเหตุ การ ping สามารถทำได้ทุกเครื่อง

dtp said...

ทดลองทำตามขั้นตอนดังนี้ครับ

1. ตรวจสอบการตั้งค่า Network ให้แน่ใจว่าเลือก "File and Printer Sharing for Microsoft Network"

2. ตรวจสอบการตั้งค่า Network ให้แน่ใจว่าในหัวข้อ "Internet Protocol (TCP/IP)" ได้ตั้งค่า DNS ตรงกันทั้ง Server และ Client

3. ทดลองปิด Firewall ทั้งบน Server และ Client หากปิดแล้วใช้งานได้ จากนั้นให้เปิด Firewall แล้วทำการเพิ่มค่า Exception หรือใช้ SCW สำหรับบน Server (วิธีใช้ SCW -> http://thaiwinadmin.blogspot.com/2008/01/kb2008054.html)

4. ตรวจสอบ Permission ทั้ง NTFS และ SHARED และตั้งค่าให้เหมาะสม อ่านวิธีการได้ที่ http://thaiwinadmin.blogspot.com/2007/08/kb-082007-06.html

ทดลองทำดูนะครับ คิดว่าพอจะช่วยได้

หมายเหตุ: วิธีการติดตั้ง Windows Server 2003 เป็น File Server อ่านรายละเอียดได้ที่ http://thaiwinadmin.blogspot.com/2008/03/kb2008099.html