Regsvr32.exe 的用法
RegSvr32.exe 具有以下命令列選項:
Regsvr32 [/u] [/n] [/i[:cmdline]] dllname
/u – 取消註冊伺服器
/i – 調用 DllInstall,為其傳遞一個可選 [cmdline];當與 /u 一起使用時,可調用 dll 卸載
/n – 不調用 DllRegisterServer;此選項必須與 /i 一起使用
/s – 靜默;不顯示任何訊息框(附加在 Windows XP 和 Windows Vista 中)
在使用 Regsvr32.exe 時,它會嘗試載入組件並調用它的 DLLSelfRegister 函數。如果此嘗試成功,則 Regsvr32.exe 會顯示一個提示成功的對話方塊。如果此嘗試失敗,則 Regsvr32.exe 會返回一條錯誤訊息,其中可能包括 Win32 錯誤碼。 有關更多資訊,請單擊下面的文章編號,以查看 Microsoft 知識庫中相應的文章:
193625 (http://support.microsoft.com/kb/193625/ ) INFO:WinInet 錯誤碼(12001 至 12156)
例如,要手動註冊 Sample.ocx ActiveX 控制項,請在命令提示字元處鍵入以下命令:
c:\regsvr32.exe sample.ocx
回到頂端
Windows Vista 中的 Regsvr32.exe 錯誤訊息
以下列表介紹了 RegSvr32 錯誤訊息和可能的原因。
命令標誌“%1”無效。請查看命令用法,然後重試。
在命令列中將無效的選項組合傳遞到 regsvr32.exe。
僅當開啟 Microsoft Visual Studio OLE 自訂控制項項目時,此命令才有效。
Visual Studio 調用了 Regsvr32.exe,但命令列中未指定模組。
要註冊模組,必須提供一個二進位名稱。
調用 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 位元)版本相容。
例如,當在 x86 電腦上運行 regsvr32.exe,並且命令列中指定的模組為 64 位元模組時,可能會發生此錯誤。
回到頂端
低於 Windows Vista 版本的 Regsvr32.exe 錯誤訊息
以下列表介紹了 RegSvr32 錯誤訊息和可能的原因。
無法識別的標誌:/invalid_flag
鍵入的標誌或開關組合無效(請參見本文中的“Regsvr32.exe 的用法”一節)。
沒有指定 DLL 名。
未添加 .DLL 檔案名(請參見本文中的“Regsvr32.exe 的用法”一節)。
Dllname 已經載入,但未發現 DllRegisterServer 或 DllUnregisterServer 進入點。
Dllname 不是 .dll 或 .ocx 檔案。例如,鍵入 regsvr32 wjview.exe 就會產生該錯誤訊息。
Dllname 不是一個可執行檔;沒有為這個檔案類型註冊的註冊協助程式。
Dllname 不是可執行檔(.exe、.dll 或 .ocx)。例如,鍵入 regsvr32 autoexec.bat 就會產生該錯誤訊息。
Dllname 已經載入,但未發現 DllRegisterServer 或 DllUnregisterServer 進入點。
Dllname 可能沒有匯出,或記憶體中存在已損壞的 Dllname 版本。建議使用 Pview 來檢測該檔案並刪除它。
Dllname 無法自行註冊,或記憶體中存在已損壞的版本。
例如,鍵入 regsvr32 icwdial.dll 後就會返回該錯誤訊息,因為 Icwdial.DLL 檔案不能自行註冊。如果您懷疑記憶體中有損壞的 Dllname 版本,請嘗試重新啟動電腦,或重新解壓縮該檔案的原始版本。如果您啟動並執行是 Windows NT,可能需要使用 Microsoft Windows NT Server 4.0 資源工具包 中的 Kill 或 Pview 工具。有關其他資訊,請單擊以查看下面的 Microsoft 知識庫文章:
197155 (http://support.microsoft.com/kb/197155/ ) 如何終止孤立進程
OleInitialize 失敗(或 OleUninitialize 失敗)。
Regsvr32 必須先初始化 COM 庫,然後才能調用所需的 COM 庫函數並在關閉時撤消對該庫的初始化。如果嘗試對 COM 庫進行初始化或撤消初始化時失敗,就會出現這些錯誤訊息。例如,Ole32.DLL 檔案可能已經損壞,或者其版本有誤。
LoadLibrary("Dllname") 失敗。GetlastError 返回 0x00000485
在 Winerror.h 中,0x00000485 = 1157 (ERROR_DLL_NOT_FOUND),表示“執行該應用程式所需的庫檔案之一無法找到”。例如,鍵入 regsvr32 missing.dll 後,如果找不到 Missing.DLL 檔案,就會返回該錯誤訊息。
LoadLibrary("Dllname") 失敗。GetLastError 返回 0x00000002
在 Winerror.h 中,0x00000002 = 2 (ERROR_FILE_NOT_FOUND),表示“系統找不到指定的檔案”。換言之,系統找不到相關的 DLL。例如,如果鍵入 regsvr32 icwdial.dll,而此時缺少 Tapi32.dll(依賴項),就會返回該錯誤訊息。
LoadLibrary("dskmaint.dll")失敗。GetLastError 返回 0x000001f
在 Winerror.h 中,0x000001f = 31 (ERROR_GEN_FAILURE),表示“連到系統上的裝置沒有發揮作用”。如果您嘗試註冊 Win16 .DLL 檔案,就會發生此現象。例如,鍵入 regsvr32 dskmaint.dll 會返回該錯誤訊息。
Dllname 中的 DllRegisterServer (或 DllUnregisterServer)失敗。傳回碼是:string
在 Winerror.h 中搜尋 string。