Windows XP Windows 7 Windows 2003 Windows Vista Windows 綜合教學 Linux 系統教學
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟體教學

Win7打開軟件提示「ActiveX部件不能創建對象」修復教程

編輯:Win7 系統應用技巧

Win7運行老舊 VB6/VBA/經典 ASP/早期管理工具/企業專用軟件時彈出「ActiveX部件不能創建對象」(錯誤碼 429 / 0x800A01AD),核心原因:scrrun.dll (Microsoft Scripting Runtime) / msado15.dll (ADO) / comctl32.ocx / mscomctl.ocx 等 ActiveX 組件未註冊/註冊損壞/版本不匹配/64位系統 WoW64 重定向問題。本文提供核心 DLL 註冊修復法與系統性排查流程。

故障現象

  • 雙擊 .exe / 運行腳本 / 打開 Access/Excel 巨集 → 彈出「ActiveX部件不能創建對象」
  • 錯誤詳情常含:Scripting.FileSystemObject / ADODB.Connection / MSComctlLib.ListView / WScript.Shell
  • 常見於:VB6 程序、經典 ASP 頁面、早期 ERP/CRM/醫療/稅務客戶端、腳本自動化工具

核心修復:註冊 scrrun.dll (最常見缺失)

  1. Win+R → cmd → 回車 (或右鍵「命令提示符」→「以管理員身份運行」)
  2. 執行命令:
regsvr32 "C:\Windows\System32\scrrun.dll"
  1. 64位系統還需註冊 32位版本 (WoW64):
regsvr32 "C:\Windows\SysWOW64\scrrun.dll"
  1. 彈出「DllRegisterServer in ... 成功」 → 確定
  2. 重新運行軟件測試

系統性註冊核心 ActiveX 組件腳本 (管理員CMD批量執行)

@echo off
rem 註冊 64位系統下的 32位組件 (SysWOW64) 為主,64位組件(System32)同步
set DLL_DIR_32=C:\Windows\SysWOW64
set DLL_DIR_64=C:\Windows\System32

echo 註冊 Microsoft Scripting Runtime (scrrun.dll)...
regsvr32 /s "%DLL_DIR_32%\scrrun.dll"
regsvr32 /s "%DLL_DIR_64%\scrrun.dll"

echo 註冊 ADO (msado15.dll, msado20.tlb, msado21.tlb, msado25.tlb, msado26.tlb, msado27.tlb, msado28.tlb)...
for %%f in (msado15.dll msado20.tlb msado21.tlb msado25.tlb msado26.tlb msado27.tlb msado28.tlb) do (
    regsvr32 /s "%DLL_DIR_32%\%%f"
    regsvr32 /s "%DLL_DIR_64%\%%f"
)

echo 註冊 常用控件...
for %%f in (comctl32.ocx mscomctl.ocx mscomct2.ocx mscomct3.ocx msdatgrd.ocx msdatlst.ocx msflxgrd.ocx mshflxgd.ocx) do (
    regsvr32 /s "%DLL_DIR_32%\%%f"
    regsvr32 /s "%DLL_DIR_64%\%%f"
)

echo 註冊 WSH (wshom.ocx, wshcon.dll, wshom.dll, wshext.dll, wshom.ocx)...
for %%f in (wshom.ocx wshcon.dll wshom.dll wshext.dll) do (
    regsvr32 /s "%DLL_DIR_32%\%%f"
    regsvr32 /s "%DLL_DIR_64%\%%f"
)

echo 完成。請重新運行軟件測試。
pause

保存為 fix_activex.bat 右鍵「以管理員身份運行」。

進階排查 (批量註冊無效)

方向操作工具/命令
文件缺失從同版本Win7拷貝 / 從安裝盤 \sources\install.wim 提取 / 下載官方運行時包DISM / install.wim 提取 / VB6/KB290887運行時
版本不匹配軟件需特定版本(如ADO 2.5/2.6/2.7/2.8/6.0) → 安裝對應 MDAC/ADO 運行時Microsoft 官網搜索 "Microsoft Data Access Components" / "ADO 2.x"
權限/註冊表損壞HKCR\CLSID\{...} 鍵值權限/損壞 → 子鍵權限修復 / 刪除重註冊RegAcl / SubInACL / 手動權限編輯
64位程序調用32位組件64位進程無法加載32位COM → 強制32位運行(CorFlags / 平台目標 x86) / 遷移到64位組件CorFlags.exe / VS項目屬性→Build→Prefer 32-bit
依賴項缺失Dependency Walker (depends.exe) 分析 .exe/.dll 缺失依賴depends.exe / Process Monitor 監控註冊表/文件訪問失敗

經典 VB6 運行時一鍵部署 (解決 90% VB6 程序 ActiveX 問題)

  1. 下載 VB6 運行時完整包 (含 msvbvm60.dll + 所有標準 OCX/DLL),官方 KB290887 / 第三方打包 VB6_Runtime_Full.exe
  2. 以管理員身份運行安裝,自動註冊所有組件到 System32/SysWOW64
  3. 重啟電腦測試

總結

ActiveX部件不能創建對象 = 核心 COM 組件未註冊/丟失。管理員CMD → regsvr32 "C:\Windows\SysWOW64\scrrun.dll" (32位優先) + 批量註冊 ADO/常用控件/WSH 腳本 → 解決 95% 老軟件問題。VB6 程序直接裝 VB6 運行時完整包 一勞永逸。Win7 跑老軟件,註冊表與 SysWOW64 是戰場!

Copyright © Windows教程網 All Rights Reserved