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

14

我的公司有一个使用Crystal Reports 7的VB6应用程序,客户要求安装在Windows 7 32位上。目前,该应用程序已安装在客户端的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文件-似乎并非如此。
  • 根据这个列表审查应用程序,没有违反这些准则的情况。

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

  • 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模式下遇到了同样的错误。这是运行在Win XP SP2虚拟机上的,可能是SP3中的某些因素导致错误发生吗?还是这只是XP模式的问题?


你安装了Microsoft Scripting Engine吗? - kyndigs
如果不是针对VBScript的话,那这句话是什么意思?如果我说错了,请原谅我的无知。 - RLT
请在您的VB6 IDE中检查项目引用,并确保您已经注册了所有这些DLL / OCX。 - MicSim
没有成功地注册DLLs/OCXs。我已经检查过了,确信它们都被注册了,但显然情况并非如此,因为如果我安装VB6 IDE,那么程序就可以运行。不过这对客户来说并不是一种解决方案。很不幸,时间已经不多了,所以我必须采取XP模式的解决方案。 - RLT
4个回答

7

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


4
安装中缺少文件msrdo20.dll。
根据Visual Basic 6.0在Windows Vista、Windows Server 2008和Windows 7上的支持声明,该文件应随应用程序一起分发。
我不确定为什么没有分发,但我的解决方案是将该文件放在机器上的某个位置,并在命令行中使用regsvr32进行注册,例如:
regsvr32 c:\windows\system32\msrdo20.dll

在理想的情况下,您应该将此与可再分发的内容打包。

2
这个下载解决了我VB6 EXE和Access 2016(使用ACEDAO.DLL)的运行时错误429。因为引起这种错误的原因有很多,所以我花了2天时间才解决它。
链接中的引用:“此下载将安装一组组件,可用于促进2010 Microsoft Office系统文件与非Microsoft Office应用程序之间的数据传输。”
下载链接:http://www.microsoft.com/en-ca/download/details.aspx?id=13255

0

你说安装了VB6 IDE后它可以工作,所以问题很可能是你尝试使用的组件依赖于已安装VB6运行时。

Windows默认情况下没有安装VB6运行时。

安装IDE是获取运行时的一种方式。对于非开发人员的计算机,应该使用微软提供的“可再分发”安装程序包。

这里有一个来自微软的VB6运行时安装程序。我不确定它是否适用于你的组件版本:

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


今天早些时候我偶然下载了那个文件,不幸的是在安装到 Windows XP SP3 后,应用程序仍无法运行,我也没找到其他更适合 XP 的可再发行组件。 - RLT
自那时起,我发现SP3机器上缺少了三个DLL文件,而这些文件在SP2机器上是存在的(将它们添加到SP3机器并注册后,应用程序就可以运行!)。它们是msrdo20.dll、msbind.dll和msstdfmt.dll。我现在正在尝试找出它们来自哪里,以及它们是否在其他可再分发文件中可用。 - RLT
1
将问题缩小到 msrdo20.dll 是导致问题的原因。 - RLT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接