ActiveX部件不能创建对象:dm.dmsoft代码:800A01AD
VBS脚本在64位系统中因默认调用64位WScript.exe导致32位ActiveX组件无法创建,出现800A01AD错误。可通过修改注册表将解释器切换为32位版本,或直接更改脚本打开方式为SysWOW64下的wscript.exe解决。若在ASP环境中,可重新注册ADODB.Stream组件或启用IIS应用程序池的32位模式。
VBS脚本运行时弹出"ActiveX部件不能创建对象"错误,代码800A01AD,这个问题在64位Windows系统上并不少见。报错界面如下图所示,通常意味着脚本尝试调用的组件没有被正确注册,或者存在系统位数兼容性问题。

要解决这个问题,需要分两步走:
第一步,修改注册表。 找到以反赌册表路径:HKEY_CLASSES_ROOT\VBSFile\Shell\Open\Command,将原本的数值数据从"%SystemRoot%\System32\WScript.exe" "%1" %*改为"%SystemRoot%\SysWow64\WScript.exe" "%1" %*。这一步的本质是把VBS脚本的默认解释器从64位的WScript.exe切换到32位的版本。
第二步,变更打开方式。 右键点击VBS脚本文件,选择"属性"→"更改"。

点击浏览按钮,导航到C:\Windows\SysWOW64\wscript.exe并选中它。

保存设置后重新运行脚本,问题应该就解决了。如果VBS属性界面里没有"更改"按钮,也可以直接右键脚本文件,选择"打开方式",效果是一样的。
那么,这个问题的根源到底是什么?其实和系统位数的兼容性有关。VBS脚本在64位系统上默认会调用64位的WScript.exe,而很多老旧的ActiveX组件(尤其是32位版本)无法在64位环境下正常工作。上述两步操作的核心目的,就是把执行引擎切换到32位的WScript.exe,从而让组件顺利加载。
聊点背景:System32文件夹在64位系统中实际存放的是64位核心文件,而SysWow64文件夹则用于存放32位兼容文件——命名容易让人混淆,但记住这个对应关系就好。总之,只要将VBS的运行版本与组件的位数匹配,问题就能迎刃而解。
补充一下
如果错误信息里还附带类似/WebEdit/upfile_based_class.asp,行 53的路径,那很可能是在ASP环境中遇到了ADODB.Stream组件无法创建的问题。可以尝试在"开始→运行"中执行以下命令来重新注册该组件:
regsvr32 "C:\Program Files\Common Files\System\ado\msado15.dll"
此外,另一个常见原因是系统出于安全考虑禁用了SCRRUN.DLL(用于读写脚本和文本文件)。在CMD命令提示符下运行regsvr32 scrrun.dll即可重新注册。
针对64位Win7 + IIS7环境的另一种解法
如果你接手的是一个2001年左右的老ASP项目,在Win7 64位 + IIS7环境下折腾半天都没搞定,不妨试试这个操作:打开IIS管理器,找到你部署的ASP项目的应用程序池,右键→"高级设置",将"启用32位应用程序"设置为True,然后重启项目。很多老组件压根不支持64位,这一步直接通过IIS的兼容模式解决问题。
或者,更激进的办法:重新注册所有系统DLL
在CMD中运行以下命令(请务必谨慎,这条命令有一定风险):
for %1 in (%windir%\system32\*.dll) do regsvr32 /s %1
注意命令中for与%1之间、%1与in之间都是空格。这条命令会遍历system32目录下的所有dll文件并重新注册。我曾为了复现问题不小心多加了一个下划线,结果电脑瞬间卡死,屏幕狂闪,产生N多个cmd.exe和regsvr32.exe进程。如果遇到这种情况,可以通过以下命令强制结束它们:
taskkill /F /IM cmd.exe
taskkill /F /IM regsvr32.exe
好了,这篇文章就介绍到这儿,希望对你排查ActiveX组件创建失败的问题有所帮助。
Windows 10 是一款微软推出的经典操作系统,拥有硬件兼容性与多任务处理能力。它更偏向把系统状态查看和常用调节动作放在一起,适合需要持续观察和微调设备状态的场景。
极度公式是一款跨平台专业LaTeX公式识别编辑软件,支持OCR公式识别和多平台编辑。和使用说明,避免使用,享受完整功能与稳定支持。做扫描整理、文字提取和表格转换时,它能把识别后的处理步骤接得更顺,资料录入这类场景会省下不少时间。
















