如果本文未說明您收到的錯誤訊息,您可從 TechNet 的網頁取得詳細錯誤訊息說明、建議行動與其他支援資源。
摘要
Regsvr32 是可登錄和取消登錄 OLE 控制項的命令列公用程式,例如 Windows 登錄中的 DLL 和 ActiveX 控制項。 Regsvr32.exe 安裝於 Windows XP 和 Windows 更新版本的 %systemroot%\System32 資料夾。
附註 在 64 位元版本的 Windows 作業系統上,有兩種版本的 Regsv32.exe 檔案:-
64 位元版本的是 %systemroot%\System32\regsvr32.exe;
-
32 位元版本的是 %systemroot%\SysWoW64\regsvr32.exe。
Regsvr32 命令語法
RegSvr32.exe 具有下列命令列選項:
Regsvr32 [/u] [/n] [/i[:cmdline]] <dllname>
/u - 取消登錄伺服器 /i - 當 DllInstall 與 /u 搭配使用呼叫 DLL 解除安裝時,呼叫 DllInstall 會將其傳送為選擇性 [cmdline] /n - 不會呼叫 DllRegisterServer,此選項必須與 /i 搭配使用 /s – 無訊息;不顯示任何訊息方塊常見的 Regsvr32 錯誤解決方案
當您收到 Regsvr32 錯誤時,請嘗試下列其中一種方法:
-
方法 1: 透過提高權限的命令提示字元重新執行 Regsvr32 命令如果要啟動提高權限的命令提示字元,請依照下列步驟執行:
Windows 8.1 和 Windows 8從螢幕右邊邊緣向內撥動,然後點選 [搜尋]。 或者,如果您使用滑鼠,請指向螢幕右下角,然後按一下 [搜尋]。 在 「搜尋」 方塊中輸入「命令提示字元」,在 「命令提示字元」 上按右鍵,然後按一下 「以系統管理員身分執行」。 如果出現要求您輸入系統管理員密碼或確認的提示,請輸入密碼或按一下 [允許]。
Windows 7 和 Windows Vista按一下「開始」,在「搜尋」方塊中輸入命令提示字元或cmd,在「命令提示字元」上按右鍵,然後按一下「以系統管理員身分執行」。 如果出現要求您輸入系統管理員密碼或確認的提示,請輸入密碼或按一下 [允許]。
Windows XP從系統管理員帳戶或具有系統管理員權限的帳戶登入,然後開啟命令提示字元視窗。
-
方法 2: 使用 32 位元版本的 Regsvr32,在 64 位元版本的 Windows 上註冊 32 位元 DLL如果在 64 位元版本的 Windows 上註冊 32 位元 DLL 時收到錯誤,請依照下列步驟執行:
-
開啟提升權限的命令提示字元。
-
如果 32 位元 DLL 位於 %systemroot%\System32 資料夾,請將其移至 %systemroot%\SysWoW64 資料夾。
-
執行下列命令:
%systemroot%\SysWoW64\regsvr32 <full path of the DLL>
-
Regsvr32 錯誤訊息
下列表格列出 RegSvr32 錯誤訊息與可能原因:
錯誤訊息 |
原因 |
---|---|
command-flag ""%1"" 無效。 請檢查命令列,然後再試一次。 |
無效的選項組合已透過命令列傳送至 regsvr32.exe。 |
只有在開啟 Microsoft Visual Studio OLE ActiveX 控制項專案時,此命令才有效。 |
Visual Studio 已叫用 Regsvr32.exe,但並未在命令列中指定任何模組。 |
若要登錄模組,您必須提供二進位名稱。 |
已叫用 Regsvr32.exe,但並未在命令列中指定任何模組。 |
命令 OleInitialize 無法執行。 您的作業系統可能記憶體不足。 請關閉任何開啟的程式,然後再試一次。 |
在呼叫所需的 COM 程式庫函數之前,Regsvr32 必須先初始化 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 錯誤訊息與可能原因:
錯誤訊息 |
原因 |
|
---|---|---|
未被確認的旗標: /invalid_flag |
您輸入的旗標或參數組合無效。 |
|
未指定 DLL 名稱。 |
您未包含 .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 失敗) |
在呼叫所需的 COM 程式庫函數之前,Regsvr32 必須先初始化 COM 程式庫,並在關閉時解除初始化程式庫。 如果嘗試初始化或解除初始化 COM 程式庫失敗了,就會出現這些錯誤訊息。 例如,Ole32.dll 檔案可能遭到損毀,或是版本錯誤。 |
|
LoadLibrary("Dll_Name") 失敗。 GetlastError 傳回 0x00000485 |
From Winerror.h, 0x00000485 = 1157 (ERROR_DLL_NOT_FOUND)。 這表示「找不到執行此應用程式所需的某個元件庫檔案」。 例如,如果找不到 Missing.dll 檔案,輸入regsvr32 missing.dll就會傳回這個錯誤訊息。 |
|
LoadLibrary("Dll_Name") 失敗。 GetLastError 傳回 0x00000002 |
From Winerror.h, 0x00000002 = 2 (ERROR_FILE_NOT_FOUND)。 這表示「系統找不到指定的檔案」。 也就是說,找不到相依的 DLL。 例如,找不到 Tapi32.dll(相依性)時,輸入regsvr32 icwdial.dll就會傳回這個錯誤訊息。 |
|
LoadLibrary("dskmaint.dll") 失敗。 GetLastError 傳回 0x000001f |
From Winerror.h, 0x000001f = 31 (ERROR_GEN_FAILURE)。 這表示「附加到系統的某個裝置失去作用」。 如果您嘗試登錄 Win16 .dll 檔案,可能就會發生這個問題。 例如,輸入regsvr32 dskmaint.dll就會傳回這個錯誤訊息。 |
|
Dll_Name 中的 DllRegisterServer (or DllUnregisterServer) 失敗。 傳回碼是: string |
在 Winerror.h 檔案中搜尋訊息所指定的字串。 |