在 Windows 7 環境下執行 regsvr32 xxx.ocx 註冊 ActiveX/COM 元件時,出現以下錯誤:
模組 "xxx.ocx" 已載入,但對 DllRegisterServer 的呼叫失敗,錯誤代碼 0x80004005。
Windows 7 引入使用者帳戶控制 (UAC),預設連管理員帳戶也以標準權限執行程式。regsvr32 需要寫入登錄機碼 HKEY_CLASSES_ROOT (實際映射至 HKEY_LOCAL_MACHINE\SOFTWARE\Classes),屬於系統層級操作,必須以系統管理員權限執行 才能成功。
cmdcmd.exe 上右鍵點擊視窗標題列會顯示「系統管理員:命令提示字元」,確認權限已提升。
在提升權限的命令提示字元中輸入:
regsvr32 "完整路徑\元件檔名.ocx"
注意事項:
regsvr32 "D:\My Components\MyControl.ocx"C:\Windows\System32 或 C:\Windows\SysWOW64) 可僅輸入檔名%windir%\SysWOW64\regsvr32.exe成功時會彈出對話框顯示:
DllRegisterServer 在 "xxx.ocx" 中成功。
| 現象 | 可能原因 | 解決方式 |
|---|---|---|
| 仍提示 0x80004005 | 元件相依 DLL 缺失 | 使用 Dependency Walker 檢查相依性,安裝缺少的 VC++ 執行階段 |
| 提示「模組可能不相容」 | 32/64 位元不匹配 | 確認元件位元數,使用對應版本 regsvr32 |
| 提示「存取被拒絕」 | 檔案權限或防毒軟體攔截 | 檢查檔案權限、暫時關閉防毒軟體嘗試 |
| 註冊成功但程式仍無法使用 | 元件需額外授權或設定 | 查閱元件文件,檢查是否需執行授權工具 |