ขณะนี้คุณออฟไลน์อยู่ กำลังรออินเทอร์เน็ตเพื่อเชื่อมต่ออีกครั้ง

วิธีการใช้เครื่องมือ Regsvr32 และแก้ไขปัญหาข้อความแสดงข้อผิดพลาด Regsvr32

ถ้าบทความนี้ไม่อธิบายข้อความแสดงข้อผิดพลาดที่คุณได้รับ คุณสามารถขอรับคำอธิบายข้อความแสดงข้อผิดพลาดในรายละเอียด การดำเนินการที่แนะนำ และแหล่งข้อมูลสนับสนุนเพิ่มเติมจากเว็บไซต์ Events and Errors Message Center
สรุป
ต้องลงทะเบียนการควบคุม OLE เช่น แฟ้ม DLL หรือ ActiveX Controls (OCX) การลงทะเบียนการควบคุม OLE จะปรับปรุงรีจิสทรี Windows พร้อมที่ตั้งและความจุของแฟ้มเพื่อให้โปรแกรมทำงานอย่างถูกต้อง

เพื่อช่วยแก้ไขปัญหาบางอย่างของ Windows, Microsoft Internet Explorer หรือโปรแกรมอื่นๆ คุณสามารถใช้เครื่องมือ Regsvr32 (Regsvr32.exe) เพื่อลงทะเบียนและยกเลิกการลงทะเบียนการควบคุม OLE

เช่น บทความ Microsoft Knowledge Base ต่อไปนี้กำหนดให้คุณใช้ Regsvr32.exe เพื่อยกเลิกการลงทะเบียนการควบคุม Wuv3is.dll ก่อนที่คุณจะติดตั้งใหม่จากไซต์ Windows Update:
241122 ข้อผิดพลาดของโปรแกรมประยุกต์เมื่อคุณคลิกที่ Product Updates
ถ้าการลงทะเบียนการควบคุมไม่สำเร็จ หรือคุณต้องการข้อมูลของนักพัฒนาเกี่ยวกับวิธีการแก้ไขปัญหาการลงทะเบียนควบคุม OLE ที่ไม่สำเร็จ ให้ดูที่บทความ Microsoft Knowledge Base
140346 สาเหตุที่เป็นไปได้สำหรับการลงทะเบียนของคอนโทรล OLE ไม่สำเร็จ
ข้อมูลเพิ่มเติม
Regsvr32.exe ให้มากับ Microsoft Internet Explorer 3.0 หรือรุ่นใหม่กว่า Windows 95 OEM Service Release 2 (OSR2) หรือรุ่นใหม่กว่า และ Windows NT 4.0 Service Pack 5 (SP5) หรือรุ่นใหม่กว่า Regsvr32.exe ถูกติดตั้งในโฟลเดอร์ระบบ (Windows Millennium Edition/Windows 98/Windows 95) หรือโฟลเดอร์ System32 (Windows NT/Windows XP/Windows Vista/Windows 7)

หมายเหตุ ในเวอร์ชั่น 64 บิตของระบบปฏิบัติการ Windows มีไฟล์ Regsv32.exe สองเวอร์ชั่น:
  • รุ่น 64 บิต คือ %systemroot%\System32\regsvr32.exe
  • รุ่น 32 บิต คือ %systemroot%\SysWoW64\regsvr32.exe

Regsvr32.exe usage

RegSvr32.exe มีตัวเลือกบรรทัดคำสั่งต่อไปนี้:
Regsvr32 [/u] [/n] [/i[:cmdline]] dllname

/u - ยกเลิกการลงทะเบียนเซิร์ฟเวอร์
/i - เรียกใช้ DllInstall passing it an optional [cmdline]; เมื่อใช้กับ /u จะเรียก dll uninstall
/n - ไม่เรียกใช้ DllRegisterServer ตัวเลือกนี้ต้องใช้กับ /i
/s – Silent; ไม่แสดงกล่องข้อความ (เพิ่มใน Windows XP และ Windows Vista)
เมื่อคุณใช้ Regsvr32.exe จะพยายามโหลดคอมโพเนนต์และเรียกใช้ฟังก์ชั่น DLLSelfRegister หากความพยายามนี้สำเร็จ Regsvr32.exe จะแสดงกล่องโต้ตอบที่แจ้งว่าสำเร็จ หากความพยายามนี้ไม่สำเร็จ Regsvr32.exe จะแสดงข้อความแสดงข้อผิดพลาด ซึ่งอาจมีรหัสข้อผิดพลาด Win32 สำหรับข้อมูลเพิ่มเติม ให้คลิกหมายเลขบทความต่อไปนี้ เพื่อดูบทความใน Microsoft Knowledge Base:
193625 รหัสข้อผิดพลาดของ WinInet (12001 ถึง 12156)
ตัวอย่างเช่น การลงทะเบียนคอนโทรล ActiveX ชื่อ Sample.ocx ด้วยตนเอง ให้พิมพ์คำสั่งต่อไปนี้ที่พร้อมท์คำสั่ง:
c:\regsvr32.exe sample.ocx

ข้อความแสดงข้อผิดพลาด Regsvr32.exe ใน Windows Vista และเวอร์ชั่นที่ใหม่กว่า

รายการต่อไปนี้มีข้อความแสดงข้อผิดพลาด RegSvr32 และสาเหตุที่เป็นไปได้:
  • ค่าสถานะของคำสั่ง ""%1"" ไม่ถูกต้อง โปรดตรวจทานการใช้คำสั่ง แล้วลองใหม่อีกครั้ง
  • มีการส่งต่อตัวเลือกร่วมกันไม่ถูกต้องในบรรทัดคำสั่งไปยัง regsvr32.exe
  • คำสั่งนี้ใช้ได้เฉพาะเมื่อเปิดโครงการ Microsoft Visual Studio OLE Activex Control
  • Regsvr32.exe ถูกเรียกโดย Visual Studio แต่ไม่มีโมดูลที่ระบุในบรรทัดคำสั่ง
  • หากจะลงทะเบียนโมดูล คุณต้องให้ชื่อแบบไบนารี
  • Regsvr32.exe ถูกเรียกโดยไม่ได้ระบุโมดูลต่างๆ ในบรรทัดคำสั่ง
  • เรียกใช้คำสั่ง OleInitialize ไม่สำเร็จ คอมพิวเตอร์ของคุณอาจมีหน่วยความจำน้อย ให้ปิดโปรแกรมต่างๆ ที่เปิดอยู่ แล้วพยามเรียกใช้คำสั่งอีกครั้ง
  • Regsvr32 ต้องกำหนดค่าเริ่มต้นไลบรารี COM ก่อนจึงจะสามารถเรียกใช้ฟังก์ชั่นไลบรารี COM ที่ต้องการได้ และไม่ยกเลิกการกำหนดค่าเริ่มต้นของไลบรารีเมื่อปิดเครื่อง ข้อความแสดงข้อผิดพลาดนี้จะเกิดขึ้นถ้าพยายามกำหนดค่าเริ่มต้นหรือยกเลิกการกำหนดค่าเริ่มต้นของไลบรารี COM ไม่สำเร็จ
  • โมดูล ""%1"" ไม่สามารถโหลดได้ \n\n ตรวจสอบให้แน่ใจว่าเก็บไบนารีไว้ในพาธที่กำหนด หรือแก้ไขจุดบกพร่องเพื่อตรวจสอบปัญหาด้วยไบนารีหรือแฟ้ม .DLL ที่อ้างอิง \n\n%2
  • มีข้อผิดพลาดเกิดขึ้นขณะโหลดโมดูลที่ถูกระบุในบรรทัดคำสั่ง ข้อความข้อผิดพลาดจะแสดงเป็นส่วนหนึ่งของข้อความ
  • โมดูล ""%1"" ถูกโหลด แต่ไม่พบจุดเข้าใช้งาน %2 \n\n ตรวจสอบให้แน่ใจว่า ""%1"" เป็นแฟ้ม DLL หรือ OCX ที่ถูกต้อง แล้วลองอีกครั้ง
  • Regsvr32.exe ไม่สามารถค้นหาจุดเข้าใช้งานที่ต้องการในโมดูลที่ระบุในบรรทัดคำสั่ง ซึ่งอาจเกิดขึ้นถ้าจุดเข้าใช้งานไม่ถูกส่งออกอย่างถูกต้องจากโมดูลหรือถ้าโมดูลไม่ใช่แฟ้ม .DLL หรือ .OCX
  • โมดูล ""%1"" ถูกโหลด แต่การเรียกใช้ %2 ล้มเหลวโดยมีรหัสข้อผิดพลาด %3 \n\n สำหรับข้อมูลเพิ่มเติมเกี่ยวกับปัญหานี้ ให้ค้นหาแบบออนไลน์โดยใช้รหัสข้อผิดพลาดเป็นคำค้นหา
  • มีข้อผิดพลาดเมื่อ regsvr32.exe เรียกจุดเข้าใช้งานในโมดูลที่ระบุในบรรทัดคำสั่ง รหัสข้อผิดพลาดจะแสดงขึ้นเป็นส่วนหนึ่งของข้อความ
  • โมดูล ""%1"" อาจเข้ากับ Windows รุ่นที่คุณกำลังเรียกใช้ไม่ได้ ตรวจสอบว่าโมดูลนี้เข้ากับ regsvr32.exe รุ่น x86 (32-บิต) หรือ x64 (64-บิต) หรือไม่
  • ข้อผิดพลาดนี้อาจเกิดขึ้น เช่น ถ้า regsvr32.exe ทำงานบนคอมพิวเตอร์ x86 และโมดูลที่ระบุในบรรทัดคำสั่งคือโมดูล 64 บิต

ข้อความแสดงข้อผิดพลาด Regsvr32.exe ในเวอร์ชั่นของ Windows ก่อนหน้า Windows Vista

รายการต่อไปนี้มีข้อความแสดงข้อผิดพลาด RegSvr32 และสาเหตุที่เป็นไปได้:
  • Unrecognized flag: /invalid_flag
  • คุณพิมพ์สถานะหรือสวิตช์ร่วมกันไม่ถูกต้อง (โปรดดูส่วน "การใช้ Regsvr32.exe" ในบทความนี้)
  • No DLL name specified.
  • คุณไม่ได้พิมพ์ชื่อแฟ้ม .dll (โปรดดูส่วน "การใช้ Regsvr32.exe" ในบทความนี้)
  • Dll_Name ถูกโหลดแล้ว แต่ไม่พบจุดเข้าใช้งานของ DllRegisterServer หรือ DllUnregisterServer
  • ชื่อ Dll ที่ระบุไม่ใช่แฟ้ม .dll หรือ .ocx เช่น การพิมพ์ regsvr32 wjview.exe จะสร้างข้อความแสดงข้อผิดพลาดนี้
  • Dll_Name ไม่ใช่แฟ้มที่สั่งงานและไม่ได้ลงทะเบียนตัวช่วยการลงทะเบียนสำหรับชนิดแฟ้มนี้
  • ชื่อ Dll ที่ระบุไม่ใช่แฟ้มที่สั่งงาน (.exe, .dll, หรือ .ocx) ตัวอย่างเช่น การพิมพ์ regsvr32 autoexec.bat จะสร้างข้อความแสดงข้อผิดพลาดนี้
  • Dll_Name ถูกโหลดแล้ว แต่ไม่พบจุดเข้าใช้งานของ DllRegisterServer หรือ DllUnregisterServer
  • ชื่อ Dll ที่ระบุอาจไม่สามารถส่งออกได้ หรือเวอร์ชั่นของชื่อ Dll ที่ระบุที่เสียหายอาจอยู่ในหน่วยความจำ ให้ลองใช้ Pview เพื่อตรวจหาแฟ้มแล้วลบแฟ้มนั้นทิ้ง
  • Dll_Name ไม่สามารถลงทะเบียนได้เองหรือมีแฟ้มที่เสียหายในหน่วยความจำ
  • เช่น การพิมพ์ regsvr32 icwdial.dll ทำให้เกิดข้อความแสดงข้อผิดพลาดนี้ เนื่องจากแฟ้ม Icwdial.dll ไม่สามารถลงทะเบียนได้เอง หากคุณสงสัยว่ามีแฟ้ม Dllname ที่เสียหายในหน่วยความจำ ให้ลองเริ่มระบบคอมพิวเตอร์ใหม่หรือลองแตกแฟ้มรุ่นเดิมใหม่อีกครั้ง หากคุณใช้ Windows NT คุณอาจต้องใช้เครื่องมือ Kill หรือ Pview จาก Microsoft Windows NT Server 4.0 Resource Kit สำหรับข้อมูลเพิ่มเติม โปรดดูบทความ Microsoft Knowledge Base197155: วิธีการหยุดกระบวนการที่ไม่ได้ใช้งาน
  • OleInitialize ล้มเหลว (หรือ OleUninitialize ล้มเหลว)
  • Regsvr32 ต้องกำหนดค่าเริ่มต้นไลบรารี COM ก่อนจึงจะสามารถเรียกใช้ฟังก์ชั่นไลบรารี COM ที่ต้องการได้ และไม่ยกเลิกการกำหนดค่าเริ่มต้นของไลบรารีเมื่อปิดเครื่อง ข้อความแสดงข้อผิดพลาดเหล่านี้เกิดขึ้นหากความพยายามในการเตรียมใช้งานหรือยกเลิกการเตรียมใช้งานไลบรารี COM ไม่สำเร็จ เช่น แฟ้ม Ole32.dll อาจเสียหายหรืออาจเป็นเวอร์ชั่นที่ผิดพลาด
  • LoadLibrary("Dll_Name") ล้มเหลว GetlastError returns 0x00000485
  • จาก Winerror.h, 0x00000485 = 1157 (ERROR_DLL_NOT_FOUND) ซึ่งหมายความว่า "ไม่พบแฟ้มไลบรารีใดๆ ที่จำเป็นต้องเรียกใช้โปรแกรมประยุกต์นี้" เช่น การพิมพ์ regsvr32 missing.dll จะแสดงข้อความแสดงข้อผิดพลาดถ้าไม่พบแฟ้ม Missing.dll
  • LoadLibrary("Dll_Name") ล้มเหลว GetLastError returns 0x00000002
  • จาก Winerror.h, 0x00000002 = 2 (ERROR_FILE_NOT_FOUND) ซึ่งหมายความว่า "ระบบไม่สามารถค้นหาแฟ้มที่ระบุได้" หรือไม่พบแฟ้ม DLL เช่น การพิมพ์ regsvr32 icwdial.dll โดยไม่มี Tapi32.dll (a dependency) จะแสดงข้อความแสดงข้อผิดพลาดนี้
  • LoadLibrary("dskmaint.dll") failed. GetLastError returns 0x000001f
  • จาก Winerror.h, 0x000001f = 31 (ERROR_GEN_FAILURE) ซึ่งหมายความว่า "อุปกรณ์ที่ติดตั้งกับระบบใช้งานไม่ได้" ลักษณะการทำงานนี้อาจเกิดขึ้นได้หากคุณพยายามลงทะเบียนแฟ้ม .dll ของ Win16 เช่น การพิมพ์ regsvr32 dskmaint.dll จะแสดงข้อความแสดงข้อผิดพลาด
  • DllRegisterServer (หรือ DllUnregisterServer)in Dll_Name ล้มเหลว Return code was: string
  • ค้นหาแฟ้ม Winerror.h สำหรับ สตริง ที่มีระบุอยู่ในข้อความ

แหล่งข้อมูลเพิ่มเติม
regsrv32 exe w98hem