我刚刚在我的Windows Server 2008服务器上安装了第三方应用程序,我得到了
ActiveX组件无法创建对象
尝试使用VBScript中的 CreateObject
进行访问时出现错误消息 .
它肯定已安装并存在于“程序和功能”下 . 有没有人有一个我可以检查的事项清单,以弄清楚发生了什么?
我现在尝试按照建议使用 regsvr32.exe /i bob.dll
注册DLL,但是我收到此错误:
模块“Bob.dll”已加载但未找到入口点DllRegisterServer . 确保“Bob.dll”是有效的DLL或OCX文件,然后再试一次 .
我应该注意到,这是64位计算机上的32位应用程序 . 它也可以在我的机器上运行,这是Windows XP 32位 .
11 回答
事实证明这个应用程序在VBScript下工作,我不得不做两件事 .
运行RegAsm.exe以注册DLL .
运行C:\ Windows \ SysWOW64 \ cscript.exe以运行我的VBScript .
感谢你的帮助 .
ALSO 如果这些不起作用,请查看有关启用32位应用程序的其他答案here .
在IIS中的DefaultAppPool的高级设置中,还要检查是否已将“启用32位应用程序”设置为True .
该应用程序正在尝试创建一个COM对象,即使该COM DLL存在,它可能依赖于另一个未安装的DLL . 你可以使用DependencyWalker来查明是否是这种情况 .
我知道这是一个老问题,已经有一个标记为正确的答案,但这对我没有帮助 .
对于将来以这种方式出现的任何可怜的灵魂,请检查您的浏览器设置 -
对我来说,使用IE,修复方法是进入工具/ Internet选项,安全选项卡,相关区域,“自定义级别”并检查ActiveX设置 . 将“初始化并将未标记为脚本安全的ActiveX控件脚本”设置为“启用”可以解决此问题
此外,当您注册组件时,请确保使用32位版本的regsvr32.exe . 如果您只是在提升的提示符下运行regsvr32.exe,它将默认采用标准的64位版本(奇怪的是它位于C:\ Windows \ System32中)
我相信您需要的版本位于C:\ Windows \ SysWow64 \ regsvr32.exe
它看起来好像你引用的对象没有在系统上注册 . 我知道你说它已安装,但这并不一定意味着它已经注册 . 要确认这一点,请搜索您在注册表中使用的progID .
此代码的示例:
我会在注册表中搜索
Scripting.FileSystemObject
. 然后我会查看找到的值之上的注册表项,为InProcServer32
值 . 这将为您提供从其注册的ActiveX文件的路径(对于Scripting.FileSystemObject
文件是"c:\windows\system32\scrrun.dll") .如果您在注册表中找不到您的progID,那么它不会在您的系统上注册,这是您的问题 . 如果它没有注册,你需要找出哪个文件注册它,通常是你的第三方应用程序的同一文件夹路径中的.ocx或.dll,然后注册这些文件 . 这是注册文件的命令:
即使您在注册表中找到progID值并且它引用了系统中存在的文件,您仍可能希望尝试重新注册该文件 . 我发现,有时注册会在某处以某种方式被破坏,重新注册文件会更容易解决问题 .
如果是32位COM / Active X,请使用位于C:\ Windows \ SysWOW64中的32位cscript.exe / wscript.exe
我在vbscript中也遇到了同样的错误 .
解:
打开命令行,运行:
它的工作原理
我在编写的VB6程序中遇到了同样的问题,其中Form使用ScriptControl对象来运行用户选择的VBScripts .
它工作正常,直到有一天,当VBScript试图创建一个Scripting.FileSystemObject时突然开始显示“运行时错误429” .
在疯了一整天,尝试了这里提出的所有解决方案之后,我开始怀疑问题出在我的申请中 .
幸运的是,我有一个该表单的备份版本:我比较了他们的代码,并发现我无意中将ScriptControl对象的UseSafeSubset属性设置为True .
这是形式的唯一区别,在恢复备份副本后,它就像一个魅力 .
希望这对某人有用 . 用VB6! :-)
最大 - 意大利
我有与Excel相同的问题,我试图使用带有Excel 64位版本的32 COM DLL,我收到此错误 . 我将COM dll重建为64位版本,错误消失 . 因此,请确保您的COM dll具有与您的应用程序相同的体系结构(x86 vs x64) .
我也有这个问题 . 我试图在64位系统中运行一个旧的32位dll . 我通过将.dll复制到C:\ Windows \ SysWoW64 \目录并运行它来实现它:
而且enabling IIS to run 32 bit apps