如何解决"运行时错误'429':ActiveX组件无法创建对象"?

RLT*_*RLT 13 vb6 dll activex ocx windows-7

我的公司有一个使用Crystal Reports 7的VB6应用程序,客户端要求在Windows 7 32位上安装它.它目前安装在客户端的Windows XP 32位SP2计算机上.与DB的连接是通过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文件 - 这似乎不是这种情况.
  • 根据此列表审核了申请,似乎没有任何内容违反这些准则

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

  • http://support.microsoft.com/kb/281848 - 与应用程序捆绑在一起的comdlg32.ocx是版本6.0.81.69,而dev机器(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模式的事实?

unb*_*ced 7

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


RLT*_*RLT 4

安装中缺少 msrdo20.dll 文件。

根据Windows Vista、Windows Server 2008 和 Windows 7 上 Visual Basic 6.0 的支持声明,此文件应随应用程序一起分发。

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

regsvr32 c:\windows\system32\msrdo20.dll
Run Code Online (Sandbox Code Playgroud)

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