หากบทความนี้ไม่ได้อธิบายถึงข้อความแสดงข้อผิดพลาดที่คุณได้รับ คุณสามารถขอรับคำอธิบายข้อความแสดงข้อผิดพลาดโดยละเอียด การดำเนินการที่แนะนำ และทรัพยากรสนับสนุนเพิ่มเติมจากหน้า TechNet เหตุการณ์และข้อผิดพลาด
สรุป
Regsvr32 เป็นโปรแกรมอรรถประโยชน์บรรทัดคำสั่งเพื่อลงทะเบียนและยกเลิกการลงทะเบียนตัวควบคุม OLE เช่น DLLs และตัวควบคุม ActiveX ใน Windows Registry Regsvr32.exe ติดตั้งอยู่ในโฟลเดอร์ %systemroot%\System32 ใน Windows XP และ Windows รุ่นที่ใหม่กว่า
หมายเหตุ ในระบบปฏิบัติการ Windows เวอร์ชัน 64 บิต มีไฟล์ Regsv32.exe สองรุ่น:
-
รุ่น 64 บิต คือ %systemroot%\System32\regsvr32.exe
-
รุ่น 32 บิต คือ %systemroot%\SysWoW64\regsvr32.exe
ไวยากรณ์ของคำสั่ง Regsvr32
RegSvr32.exe มีตัวเลือกบรรทัดคำสั่งต่อไปนี้:
Regsvr32 [/u] [/n] [/i[:cmdline]] <dllname>
/u - ยกเลิกการลงทะเบียนเซิร์ฟเวอร์
/i - เรียกใช้ DllInstall passing it an optional [cmdline]; เมื่อใช้กับ /u จะเรียก dll uninstall
/n - ไม่เรียกใช้ DllRegisterServer ตัวเลือกนี้ต้องใช้กับ /i
/s – Silent; ไม่แสดงกล่องข้อความ
วิธีแก้ปัญหาทั่วไปสำหรับข้อผิดพลาด Regsvr32
ลองใช้วิธีใดวิธีหนึ่งต่อไปนี้เมื่อคุณได้รับข้อผิดพลาด Regsvr32:
-
วิธีที่ 1: เรียกใช้คำสั่ง Regsvr32 อีกครั้งจากพร้อมท์คำสั่งระดับสูงเมื่อต้องการเปิดพร้อมท์คำสั่งระดับสูง ให้ทำตามขั้นตอนเหล่านี้:
Windows 8.1 และ Windows 8ปัดเจากขอบด้านขวาของหน้าจอเข้ามา แล้วแตะ ค้นหา หรือถ้าคุณกำลังใช้เมาส์ ให้ชี้เมาส์ไปที่มุมล่างขวาของหน้าจอ แล้วคลิก ค้นหา พิมพ์ Command Prompt ในกล่อง ค้นหา แล้วคลิกขวา Command Promptจากนั้นให้คลิก เรียกใช้ในฐานะผู้ดูแลระบบ หากคุณได้รับแจ้งเตือนให้ใส่รหัสผ่านของผู้ดูแลระบบหรือให้ทำการยืนยัน ให้ใส่รหัสผ่านหรือคลิก อนุญาต
Windows 7 และ Windows Vistaคลิก เริ่มต้นแล้วพิมพ์ Command Prompt หรือ cmd ในกล่อง ค้นหา แล้วคลิกขวา Command Prompt จากนั้นให้คลิก เรียกใช้ในฐานะผู้ดูแลระบบ หากคุณได้รับแจ้งเตือนให้ใส่รหัสผ่านของผู้ดูแลระบบหรือให้ทำการยืนยัน ให้ใส่รหัสผ่านหรือคลิก อนุญาต
Windows XPเข้าสู่ระบบด้วยบัญชีของผู้ดูแลระบบหรือบัญชีที่มีการอนุญาตระดับผู้ดูแลระบบ จากนั้นเปิดหน้าต่างพร้อมท์คำสั่ง
-
วิธีการ 2: ใช้ Regsvr32 เวอร์ชัน 32-บิต เพื่อลงทะเบียน DLL 32-บิต ใน Windows เวอร์ชัน 64-บิตหากคุณได้รับข้อผิดพลาดตอนลงทะเบียน DLL 32-บิต บน Windows เวอร์ชัน 64 บิต ให้ทำตามขั้นตอนเหล่านี้:
-
เปิดพร้อมท์คำสั่งด้วยสิทธิ์ผู้ดูแล
-
หาก DLL 32-บิต อยู่ในโฟลเดอร์ %systemroot%\System32 ให้ย้ายไปยังโฟลเดอร์ %systemroot%\SysWoW64
-
เรียกใช้คำสั่งต่อไปนี้:
%systemroot%\SysWoW64\regsvr32 <full path of the DLL>
-
ข้อความแสดงข้อผิดพลาด Regsvr32
ตารางต่อไปนี้ประกอบด้วยข้อความแสดงข้อผิดพลาด 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 และสาเหตุที่เป็นไปได้:
ข้อความแสดงข้อผิดพลาด |
สาเหตุ |
|
---|---|---|
Unrecognized flag: /invalid_flag |
คุณพิมพ์การรวมกันของค่าสถานะหรือสวิตช์ที่ไม่ถูกต้อง |
|
No DLL name specified. |
คุณไม่ได้ใส่ชื่อไฟล์ .dll |
|
โหลด Dll_Name แล้ว แต่ไม่พบจุดเข้าใช้งาน DllRegisterServer หรือ DllUnregisterServer |
ชื่อ Dll ที่ระบุไม่ใช่แฟ้ม .dll หรือ .ocx เช่น การพิมพ์ regsvr32 wjview.exe จะสร้างข้อความแสดงข้อผิดพลาดนี้ |
|
Dll_Name ไม่ใช่ไฟล์ที่สามารถปฏิบัติการได้และไม่มีตัวช่วยการลงทะเบียนสำหรับไฟล์ประเภทนี้ |
ชื่อ Dll ที่ระบุไม่ใช่แฟ้มที่สั่งงาน (.exe, .dll, หรือ .ocx) ตัวอย่างเช่น การพิมพ์ regsvr32 autoexec.bat จะสร้างข้อความแสดงข้อผิดพลาดนี้ |
|
Dll_Name ไม่สามารถลงทะเบียนได้ด้วยตนเองหรือมีเวอร์ชันที่เสียหายอยู่ในหน่วยความจำ |
เช่น การพิมพ์ regsvr32 icwdial.dll ทำให้เกิดข้อความแสดงข้อผิดพลาดนี้ เนื่องจากแฟ้ม Icwdial.dll ไม่สามารถลงทะเบียนได้เอง หากคุณสงสัยว่ามีแฟ้ม Dllname ที่เสียหายในหน่วยความจำ ให้ลองเริ่มระบบคอมพิวเตอร์ใหม่หรือลองแตกแฟ้มรุ่นเดิมใหม่อีกครั้ง |
|
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 (การพึ่งพา) หายไปจะส่งข้อความแสดงข้อผิดพลาดนี้กลับมา |
|
LoadLibrary("dskmaint.dll") failed. GetLastError returns 0x000001f |
จาก Winerror.h, 0x000001f = 31 (ERROR_GEN_FAILURE) ซึ่งหมายความว่า "อุปกรณ์ที่ติดตั้งกับระบบใช้งานไม่ได้" ลักษณะการทำงานนี้อาจเกิดขึ้นได้หากคุณพยายามลงทะเบียนแฟ้ม .dll ของ Win16 ตัวอย่างเช่น การพิมพ์ regsvr32 dskmaint.dll จะส่งข้อความแสดงข้อผิดพลาดนี้กลับมา |
|
DllRegisterServer (หรือ DllUnregisterServer) ใน Dll_Name ล้มเหลว Return code was: string |
ค้นหาไฟล์ Winerror.h สำหรับ สตริง ที่ระบุอยู่ในข้อความ |