代码之家  ›  专栏  ›  技术社区  ›  GordyII

ActiveX组件无法创建对象

  •  32
  • GordyII  · 技术社区  · 17 年前

    我刚刚在我的Windows Server 2008服务器上安装了第三方应用程序

    ActiveX组件无法创建对象

    当我尝试使用 CreateObject 在VBScript中。

    我现在尝试使用 regsvr32.exe /i bob.dll 正如建议的那样,但我得到了以下错误:

    已加载模块“Bob.dll”,但未加载入口点DllRegisterServer 没有找到。

    请确保“Bob.dll”是有效的dll或OCX文件,然后重试。

    我应该注意到,这是一个32位的应用程序,位于64位机器上 这一点。它在我的32位Windows XP机器上也可以正常工作。

    11 回复  |  直到 13 年前
        1
  •  49
  •   TylerH Ash Burlaczenko    5 年前

    事实证明,要让这个应用程序在VBScript下工作,我必须做两件事。

    1. 运行RegAsm.exe以注册DLL。

    如果这些都不起作用,请查看另一个答案 here 关于在IIS中启用32位应用程序。

        2
  •  40
  •   Keith Trangmar    15 年前

        3
  •  10
  •   MrTelly    17 年前

    应用程序正在尝试创建COM对象,即使该COM DLL存在,它也可能依赖于另一个未安装的DLL。你可以用 DependencyWalker 看看情况是否如此。

        4
  •  5
  •   Verakso    15 年前

    此外,注册组件时,请确保使用32位版本的regsvr32.exe。 如果只是在提升的提示符下运行regsvr32.exe,它将默认采用标准的64位版本(奇怪的是,它位于C:\Windows\System32中)

    我认为您需要的版本位于C:\Windows\SysWow64\regsvr32.exe中

        5
  •  5
  •   TylerH Ash Burlaczenko    5 年前

    检查浏览器设置。

    对于我来说,使用IE,修复方法是进入工具/互联网选项、安全选项卡、相关区域“自定义级别”并检查ActiveX设置。将“初始化和编写未标记为脚本安全的ActiveX控件”设置为“启用”修复了这个问题。

        6
  •  2
  •   bluish dmajkic    13 年前

    实际上,您所引用的对象似乎未在系统上注册。我知道你说它已安装,但这并不一定意味着它已注册。要确认这一点,请搜索您在注册表中使用的progID。

    此代码的示例:

    set objFSO = CreateObject("Scripting.FileSystemObject") 
    

    Scripting.FileSystemObject 在登记处。然后我会查看找到的值上方的注册表项,例如 InProcServer32 价值这将为您提供从中注册ActiveX文件的路径(例如 文件是“c:\windows\system32\scrun.dll”)。

    regsvr32 /i "c:\windows\system32\scrrun.dll"
    

        7
  •  2
  •   Jean-Philippe    11 年前

    如果是32位COM/Active X,请使用位于C:\Windows\SysWOW64中的32位cscript.exe/wscript.exe版本\

        8
  •  1
  •   sifar    7 年前

    我知道这是一个旧线程,但是有人检查过他们的防病毒软件是否在他们的系统上阻止Win32API和脚本吗?我在我的办公系统上安装了CylanceProtect,我发现与其他人列出的问题相同。如果您在事件查看器中检查Windows日志,则可以确认这一点。

        9
  •  0
  •   Andrew Barber Eric Lafortune    13 年前

    Set objFSO = CreateObject("Scripting.FileSystemObject")
    

    解决方案:
    打开命令行,运行:

    regsvr32 /i "c:\windows\system32\scrrun.dll"
    

    它是有效的

        10
  •  0
  •   Max1234-ITA    11 年前

    直到前几天,当VBScript试图创建Scripting.FileSystemObject时,它突然开始显示“Runtime error 429”。

    这是形式上唯一的不同,在恢复备份副本后,它就像一个符咒。

    希望这对其他人有用。使用VB6启动!:-)

        11
  •  0
  •   Malick    10 年前

    我对Excel也有同样的问题,我试图使用32 COM DLL与Excel 64位版本,我得到了这个错误。我将COM dll重建为64位版本,错误消失。因此,请确保您的COM dll与您的应用程序具有相同的体系结构(x86与x64)。

        12
  •  0
  •   Chris Broski    7 年前

    我也有这个问题。我试图在64位系统中运行一个旧的32位dll。我通过将.dll复制到C:\Windows\SysWoW64\目录并运行以下命令使其工作:

    %systemroot%\SysWoW64\regsvr32 "C:\Windows\SysWoW64\thenameofyourdll.dll"
    

    而且 enabling IIS to run 32 bit apps