การใช้เครื่องมือ Regsvr32 และข้อผิดพลาด
เมื่อผู้ใช้ Windows ต้องการแก้ไขปัญหาบางอย่างใน Windows หรือ Internet Explorer หรือโปรแกรมอื่นๆ ผู้ใช้ Windows XP สามารถใช้เครื่องมือ Regsvr32 (Regsvr32.exe) เพื่อลงทะเบียนและยกเลิกการลงทะเบียนคอนโทรล OLE เช่น DLL หรือไฟล์ ActiveX Controls (OCX) ต่างๆ ที่ลงทะเบียนได้ด้วยตนเอง
ในกรณีการลงทะเบียนคอนโทรลไม่สำเร็จหรือว่าต้องการข้อมูลเพิ่มเติมสามารถอ่านรายละเอียดได้จากเว็บไซต์ KB140346
เครื่องมือ Regsvr32.exe นั้นจะให้มากับ Internet Explorer 3.0 หรือเวอร์ชันใหม่กว่า โดยบนระบบปฏิบัติการ Windows NT, Windows XP และ Windows Vista นั้นจะติดตั้งในโฟลเดอร์ System32
การใช้งานเครื่องมือ Regsvr32.exe
เครื่องมือ Regsvr32.exe มีอ็อปชันดังนี้
Regsvr32 [/u] [/n] [/i[:cmdline]] dllname
/u - ยกเลิกการลงทะเบียนเซิร์ฟเวอร์
/i - เรียกใช้ DllInstall ที่ส่งผ่านเป็นอ็อปชันเพิ่มเติมของ [cmdline] เมื่อใช้ร่วมกับ /u จะเรียกใช้การยกเลิกการติดตั้ง dll
/n - ไม่เรียกใช้ DllRegisterServer ตัวเลือกนี้ต้องใช้คู่กับ /i
/s – Silent ทำงานโดยไม่แสดงข้อความ (มีเฉพาะใน Windows XP และ Windows Vista)
เมื่อทำการรันคำสั่ง Regsvr32.exe จะพยายามโหลดคอมโพเนนต์และเรียกใช้ฟังก์ชัน DLLSelfRegister หากความพยายามนี้สำเร็จ Regsvr32.exe จะแสดงไดอะล็อกบ็อกซ์แจ้งให้ทราบว่าสำเร็จ หากความพยายามนี้ไม่สำเร็จ Regsvr32.exe จะแสดงข้อความแสดงข้อผิดพลาด ซึ่งอาจมีรหัสข้อผิดพลาด Win32 ซึ่งสามารถข้อมูลเพิ่มเติมสามารถอ่านรายละเอียดได้จากเว็บไซต์ http://support.microsoft.com/kb/193625/ สำหรับรหัสข้อผิดพลาดของ WinInet (12001 ถึง 12156)
ตัวอย่าง: การลงทะเบียนคอนโทรล ActiveX ชื่อ Sample.ocx ด้วยตนเอง ให้พิมพ์คำสั่งต่อไปนี้ที่คอมมานด์พร้อมท์
c:\regsvr32.exe sample.ocx
ข้อความแสดงข้อผิดพลาดของ Regsvr32.exe ใน Windows Vista
รายชื่อต่อไปนี้มีข้อความแสดงข้อผิดพลาดของ RegSvr32 และที่อาจเป็นไปได้
- The command-flag ""%1"" is not valid. Please review the command usage and try again.
สาเหตุ: มีการส่งต่ออ็อปชันร่วมกันไม่ถูกต้องในคอมมานด์ไลน์ไปยัง regsvr32.exe
- This command is only valid if a Microsoft Visual Studio OLE Custom Control project is opened.
สาเหตุ: Regsvr32.exe ถูกเรียกโดย Visual Studio แต่ไม่มีโมดูลที่ระบุในคอมมานด์ไลน์
- To register a module, you must provide a binary name.
สาเหตุ: Regsvr32.exe ถูกเรียกโดยไม่ได้ระบุโมดูลต่างๆ ในคอมมานด์ไลน์.
- The command OleInitialize failed to run. Your computer might be low on memory. Close any open programs and then try again.
สาเหตุ: Regsvr32 ต้องเตรียมใช้งานไลบรารี COM ก่อนที่จะสามารถเรียกใช้ฟังก์ชันต่างๆ ของไลบรารี COM ได้และยกเลิกไบบรารีเมื่อปิดระบบ ข้อความแสดงข้อผิดพลาดเหล่านี้เกิดขึ้น หากความพยายามในการเตรียมใช้งานหรือ ยกเลิกการเตรียมใช้งานไลบรารี COM ไม่สำเร็จ
- The module ""%1"" failed to load.\n\n Make sure the binary is stored at the specified path or debug it to check for problems with the binary or dependent .DLL files.\n\n%2.
สาเหตุ: เกิดข้อผิดพลาดในการโหลดโมดูลที่ถูกระบุในคอมมานด์ไลน์ ข้อความผิดพลาดปรากฏเป็นส่วนหนึ่งของข้อความ
- The module ""%1"" was loaded but the entry-point %2 was not found.\n\nMake sure that ""%1"" is a valid DLL or OCX file and then try again
สาเหตุ: Regsvr32.exe ไม่พบจุดเข้าใช้งานที่ต้องการในโมดูลที่ระบุในคอมมานด์ไลน์ ปัญหานี้อาจเกิดขึ้นได้หากไม่ได้ส่งออกจุดเข้าใช้งานจากโมดูลอย่างเหมาะสม หรือหากโมดูลนี้ไม่ใช่แฟ้ม .DLL หรือ .OCX
- The module ""%1"" was loaded but the call to %2 failed with error code %3.\n\nFor more information about this problem, search online using the error code as a search term.
สาเหตุ: เกิดข้อผิดพลาดเมื่อ regsvr32.exe เรียกจุดเข้าใช้งานในโมดูลที่ระบุอยู่ในคอมมานด์ไลน์ รหัสข้อผิดพลาดปรากฏเป็นส่วนหนึ่งของข้อความ
- The module ""%1"" may not compatible with the version of Windows that you're running. Check if the module is compatible with an x86 (32-bit) or x64 (64-bit) version of regsvr32.exe.
สาเหตุ: ข้อผิดพลาดนี้อาจเกิดขึ้นได้ ตัวอย่างเช่น หากเรียกใช้ regsvr32.exe บนเครื่องรุ่น x86 และโมดูลที่ระบุในคอมมานด์ไลน์เป็นโมดูลแบบ 64-บิต
ข้อความแสดงข้อผิดพลาดของ Regsvr32.exe ในวินโดวส์เวอร์ชันก่อน Windows Vista
รายชื่อต่อไปนี้มีข้อความแสดงข้อผิดพลาด RegSvr32 และสาเหตุที่อาจเป็นไปได้
- Unrecognized flag: /invalid_flag
สาเหตุ: พิมพ์สถานะหรือสวิตช์ร่วมกันไม่ถูกต้อง
- No DLL name specified.
สาเหตุ: ไม่ได้พิมพ์ชื่อแฟ้ม .dll
- Dllname was loaded, but the DllRegisterServer or DllUnregisterServer entry point was not found.
สาเหตุ: Dllname ไม่ใช่แฟ้ม .dll หรือ .ocx ตัวอย่างเช่น การพิมพ์ regsvr32 wjview.exe ทำให้เกิดข้อความแสดงข้อผิดพลาดนี้
- Dllname is not an executable file and no registration helper is registered for this file type.
สาเหตุ: Dllname ไม่ใช่แฟ้มที่เรียกใช้งานได้ (.exe, .dll หรือ .ocx) ตัวอย่างเช่น การพิมพ์ regsvr32 autoexec.bat ทำให้เกิดข้อความแสดงข้อผิดพลาดนี้
- Dllname was loaded, but the DllRegisterServer or DllUnregisterServer entry point was not found.
สาเหตุ: Dllname ไม่ถูกส่งออกหรือมี Dllname รุ่นที่เสียหายในหน่วยความจำ ให้ลองใช้ Pview เพื่อตรวจหาแฟ้มแล้วลบแฟ้มนั้นทิ้ง
- Dllname is not self-registerable or a corrupted version is in memory.
สาเหตุ: เช่น การพิมพ์ regsvr32 icwdial.dll ทำให้เกิดข้อความแสดงข้อผิดพลาดนี้ เนื่องจากแฟ้ม Icwdial.dll ไม่สามารถลงทะเบียนได้เอง หากสงสัยว่ามีแฟ้ม Dllname ที่เสียหายในหน่วยความจำ ให้ลองเริ่มระบบคอมพิวเตอร์ใหม่หรือลองแตกแฟ้มรุ่นเดิมใหม่อีกครั้ง
- OleInitialize failed (หรือ OleUninitialize failed).
สาเหตุ: Regsvr32 ต้องเตรียมใช้งานไลบรารี COM ก่อนที่จะสามารถเรียกใช้ฟังก์ชันต่างๆ ของไลบรารี COM ได้และยกเลิกไลบรารีเมื่อปิดระบบ ข้อความแสดงข้อผิดพลาดเหล่านี้เกิดขึ้นหากความพยายามในการเตรียมใช้งานหรือ ยกเลิกการเตรียมใช้งานไลบรารี COM ไม่สำเร็จ เช่น แฟ้ม Ole32.dll อาจเสียหายหรือเป็นรุ่นที่ไม่ถูกต้อง
- LoadLibrary("Dllname") failed. GetlastError returns 0x00000485
สาเหตุ: จาก Winerror.h, 0x00000485 = 1157 (ERROR_DLL_NOT_FOUND) ซึ่งหมายความว่า "ไม่พบแฟ้มไลบรารีที่ต้องการเพื่อใช้แอปพลิเคชันนี้" เช่น การพิมพ์ regsvr32 missing.dll ทำให้เกิดข้อความแสดงข้อผิดพลาดนี้ เนื่องจากไม่พบแฟ้ม Missing.dll
- LoadLibrary("Dllname") failed. 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 (or DllUnregisterServer)in Dllname failed. Return code was: string
สาเหตุ: ค้นหา Winerror.h เพื่อหา สตริงนั้น
บทความโดย: Thai Windows Administrator Blog
ที่มา
• Explanation of Regsvr32 usage and error messages
Copyright © 2008 TWA Blog. All Rights Reserved.
No comments:
Post a Comment
เชิญแลกเปลี่ยนความคิดเห็น ขอสงวนสิทธิ์ในการเผยแพร่ข้อความ HTML