【问题标题】:How do I resolve "Run-time error '429': ActiveX component can't create object"?如何解决“运行时错误'429':ActiveX 组件无法创建对象”?
【发布时间】:2010-11-18 09:51:17
【问题描述】:

我的公司有一个使用 Crystal Reports 7 的 VB6 应用程序,客户要求将其安装在 32 位 Windows 7 上。它当前安装在客户端的 Windows XP 32 位 SP2 机器上。通过 ODBC 与另一台服务器上的 SQL Server 2000 实例连接到数据库。

在 Windows 7 上,安装工作正常,但是当您尝试打开应用程序时,出现错误。

我看过以下内容:

  • 使用 regsvr32 注册所有 dll 和 ocx 文件。有些不会注册,因为它们要么已经注册,要么给出以下消息“确保“[name].dll”是有效的 DLL 或 OCX 文件,然后重试。”我阅读了这个论坛主题:http://social.msdn.microsoft.com/forums/en-US/vblanguage/thread/0653f685-4526-45d9-89f3-8c479a6b4c62
  • 使用 ProcessMonitor 应用程序监视应用程序的打开情况,以尝试发现是否缺少 dll 或 ocx 文件 - 情况似乎并非如此。
  • 根据this list 审核了申请,似乎没有任何内容违反这些准则

我注意到知识库中有两个与此相关的项目

  • http://support.microsoft.com/kb/281848 - 与应用程序捆绑在一起的 comdlg32.ocx 版本为 6.0.81.69,开发机器(WinXP 32 位)上 system32 文件夹中的版本为 6.1.97.82 .但是,如果这是问题所在,那么它现在肯定不会起作用吗?
  • http://support.microsoft.com/kb/184898 - 我不确定如何确认这是问题所在

最后,由于复杂性,我不允许对此应用程序进行代码更改。即使我是,我也不是一个 VB6 程序员,我只是得到了非常支持项目的人!如果需要更改代码,那么我将不得不使用 WinXP 模式进行调查。

更新:我在 XP 模式下遇到同样的错误。那是带有 SP3 VM 的 Win XP。这在 Win XP SP2 VM 上运行,SP3 中是否有可能导致这种情况发生的东西?或者它只是 XP 模式的事实?

【问题讨论】:

  • 您是否安装了 Microsoft 脚本引擎?
  • 那不是 VBScript 的吗?如果不是,请原谅我的无知。
  • 检查您的 VB6 IDE 中的项目引用,并确保您已经注册了所有检查的 DLL/OCX。
  • 注册 DLL/OCX 没有任何运气。我已经检查过了,我确定它们都已经注册了,但显然没有,就像我安装了 VB6 IDE,那么程序就可以工作了。然而,对于这个客户来说,这并不是一个真正的解决方案。不幸的是,我现在时间不多了,所以我必须使用 XP Mode 解决方案。

标签: dll vb6 windows-7 activex ocx


【解决方案1】:

我遇到了同样的错误,但我通过在 C:\Windows\SysWOW64 中使用 regsvr32.exe 解决了。 因为我们使用x64系统。所以如果你的机器也是x64的,ocx/dll也必须注册regsvr32 x64版本

【讨论】:

    【解决方案2】:

    安装中缺少文件 msrdo20.dll。

    根据the Support Statement for Visual Basic 6.0 on Windows Vista, Windows Server 2008 and Windows 7,此文件应与应用程序一起分发。

    我不确定为什么不是,但我的解决方案是将文件放在机器上的某个位置,并在命令行中使用 regsvr32 进行注册,例如:

    regsvr32 c:\windows\system32\msrdo20.dll
    

    在理想情况下,您可以将其与可再发行组件打包在一起。

    【讨论】:

      【解决方案3】:

      此下载修复了我的 VB6 EXE 和 Access 2016(使用 ACEDAO.DLL)运行时错误 429。我花了 2 天的时间才解决它,因为 429 的原因太多了。

      http://www.microsoft.com/en-ca/download/details.aspx?id=13255

      链接中的引用: "此下载将安装一组组件,可用于促进 2010 Microsoft Office System 文件和非 Microsoft Office 应用程序之间的数据传输"

      【讨论】:

        【解决方案4】:

        您说安装 VB6 IDE 后它就可以工作,因此问题可能是您尝试使用的组件取决于正在安装的 VB6 运行时。

        默认情况下,VB6 运行时未安装在 Windows 上。

        安装 IDE 是获取运行时的一种方式。对于非开发者机器,应使用 Microsoft 的“可再发行”安装程序包。

        这是一个来自 Microsoft 的 VB6 运行时安装程序。我不确定它是否适合您的组件:

        http://www.microsoft.com/downloads/en/details.aspx?FamilyID=7b9ba261-7a9c-43e7-9117-f673077ffb3c

        【讨论】:

        • 我今天早些时候偶然下载了那个文件,不幸的是,在 XP SP3 上安装后,该应用程序仍然没有运行,而且我没有看到另一个更适合 XP 的可再发行文件。
        • 从那时起,我刚刚发现 SP2 机器上存在的 SP3 机器上缺少三个 DLL(将它们添加到 SP3 机器并注册它们允许应用程序运行!)。它们是 msrdo20.dll、msbind.dll 和 msstdfmt.dll。我现在正试图找出它们来自哪里,以及它们是否可以在另一个可再分发的地方使用。
        • 将其缩小到导致问题的 msrdo20.dll。
        猜你喜欢
        • 2013-04-13
        • 2011-02-08
        • 2015-04-24
        • 2016-04-24
        • 2021-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-05
        相关资源
        最近更新 更多