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

时间:2021-01-14 01:58:25

My company has a VB6 application using Crystal Reports 7 which a client has asked to be installed on Windows 7 32 bit. It is currently installed on Windows XP 32bit SP2 machines at the client. Connection to the DB is done via ODBC to SQL Server 2000 instance on another server.

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

On Windows 7, the installation works fine, however when you try to open the application, the error is given.

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

I have looked at the following:

我看了以下内容:

  • Registering all the dll's and ocx files using regsvr32. Some will not register as they either are registered already or the following message is given "Make sure that "[name].dll" is valid DLL or OCX file and then try again." I read this forum thread regarding this: http://social.msdn.microsoft.com/forums/en-US/vblanguage/thread/0653f685-4526-45d9-89f3-8c479a6b4c62
  • 使用regsvr32注册所有的dll和ocx文件。有些人不会注册,因为他们要么已经注册,要么下面的消息是“确保”[姓名]。“是有效的dll或OCX文件,然后再试一次。”我读过这个论坛的帖子:http://social.msdn.microsoft.com/forums/en- us/vblanguage/thread/0653f65-4526 -45d9-89f3-8c479a6b4c62
  • Monitored the opening of the application using a ProcessMonitor application to try and spot if there is a missing dll or ocx file - this does not seem to be the case.
  • 使用ProcessMonitor应用程序监视应用程序的打开,以尝试发现是否存在缺失的dll或ocx文件——这似乎不是事实。
  • Reviewed the application according to this list and nothing seems to be against these guidelines
  • 根据这个列表审查了应用程序,似乎没有什么违反这些准则的。

I've noticed two items in the knowledge base that relate to this

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

  • http://support.microsoft.com/kb/281848 - the comdlg32.ocx bundled with the application is version 6.0.81.69 and the one in the system32 folder on the dev machine (WinXP 32 bit) is 6.1.97.82. However if this was the issue then surely it would not work currently?
  • http://support.microsoft.com/kb/281848 comdlg32。与应用程序绑定的ocx版本是6.0.81.69,而开发机器上system32文件夹(WinXP 32位)中的版本是6.1.97.82。然而,如果这是一个问题,那么它现在肯定不会起作用吗?
  • http://support.microsoft.com/kb/184898 - I'm not sure how to confirm that this is the issue
  • http://support.microsoft.com/kb/184898 -我不确定如何确认这是问题所在

Finally, due to complexities, I am not allowed to make code changes to this application. Even if I was, I'm not a VB6 programmer, just the guy who got the terribly support project! If code changes are required, then I'll have to investigate using WinXP mode.

最后,由于复杂性,我不允许对这个应用程序进行代码更改。即使我是,我也不是VB6程序员,只是那个得到了非常支持的项目的家伙!如果需要修改代码,那么我必须使用WinXP模式进行研究。

Update: I get the same error in XP Mode. That's a Win XP with SP3 VM. This runs on a Win XP SP2 VM, is there potentially something in SP3 that would have caused this to occur? Or is it just a fact of it being XP Mode?

更新:我在XP模式中得到了相同的错误。这是SP3 VM的Win XP。这是在Win XP SP2 VM上运行的,SP3中是否存在导致这种情况发生的潜在因素?或者它只是XP模式的一个事实?

4 个解决方案

#1


2  

The file msrdo20.dll is missing from the installation.

文件msrdo20。安装中缺少dll。

According to the Support Statement for Visual Basic 6.0 on Windows Vista, Windows Server 2008 and Windows 7 this file should be distributed with the application.

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

I'm not sure why it isn't, but my solution is to place the file somewhere on the machine, and register it using regsvr32 in the command line, eg:

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

regsvr32 c:\windows\system32\msrdo20.dll

In an ideal world you would package this up with the redistributable.

在理想情况下,你可以用可重新分配的东西来打包。

#2


1  

This download fixed my VB6 EXE and Access 2016 (using ACEDAO.DLL) run-time error 429. Took me 2 long days to get it resolved because there are so many causes of 429.

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

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

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

QUOTE from link: "This download will install a set of components that can be used to facilitate transfer of data between 2010 Microsoft Office System files and non-Microsoft Office applications"

引用链接:“本下载将安装一组组件,可用于在2010年Microsoft Office系统文件和非Microsoft Office应用程序之间传输数据。”

#3


1  

I got the same error but I solved by using regsvr32.exe in C:\Windows\SysWOW64. Because we use x64 system. So if your machine is also x64, the ocx/dll must registered also with regsvr32 x64 version

我得到了相同的错误,但是我通过使用regsvr32解决了这个问题。exe在C:\Windows\SysWOW64.因为我们使用x64系统。因此,如果您的机器也是x64,那么ocx/dll也必须注册到regsvr32 x64版本

#4


0  

You say it works once you install the VB6 IDE so the problem is likely to be that the components you are trying to use depend on the VB6 runtime being installed.

您说安装VB6 IDE后它就会工作,所以问题很可能是您要使用的组件依赖于安装的VB6运行时。

The VB6 runtime isn't installed on Windows by default.

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

Installing the IDE is one way to get the runtime. For non-developer machines, a "redistributable" installer package from Microsoft should be used instead.

安装IDE是获得运行时的一种方法。对于非开发人员的机器,应该使用来自Microsoft的“可再分发”安装程序包。

Here is one VB6 runtime installer from Microsoft. I'm not sure if it will be the right version for your components:

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

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

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

#1


2  

The file msrdo20.dll is missing from the installation.

文件msrdo20。安装中缺少dll。

According to the Support Statement for Visual Basic 6.0 on Windows Vista, Windows Server 2008 and Windows 7 this file should be distributed with the application.

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

I'm not sure why it isn't, but my solution is to place the file somewhere on the machine, and register it using regsvr32 in the command line, eg:

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

regsvr32 c:\windows\system32\msrdo20.dll

In an ideal world you would package this up with the redistributable.

在理想情况下,你可以用可重新分配的东西来打包。

#2


1  

This download fixed my VB6 EXE and Access 2016 (using ACEDAO.DLL) run-time error 429. Took me 2 long days to get it resolved because there are so many causes of 429.

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

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

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

QUOTE from link: "This download will install a set of components that can be used to facilitate transfer of data between 2010 Microsoft Office System files and non-Microsoft Office applications"

引用链接:“本下载将安装一组组件,可用于在2010年Microsoft Office系统文件和非Microsoft Office应用程序之间传输数据。”

#3


1  

I got the same error but I solved by using regsvr32.exe in C:\Windows\SysWOW64. Because we use x64 system. So if your machine is also x64, the ocx/dll must registered also with regsvr32 x64 version

我得到了相同的错误,但是我通过使用regsvr32解决了这个问题。exe在C:\Windows\SysWOW64.因为我们使用x64系统。因此,如果您的机器也是x64,那么ocx/dll也必须注册到regsvr32 x64版本

#4


0  

You say it works once you install the VB6 IDE so the problem is likely to be that the components you are trying to use depend on the VB6 runtime being installed.

您说安装VB6 IDE后它就会工作,所以问题很可能是您要使用的组件依赖于安装的VB6运行时。

The VB6 runtime isn't installed on Windows by default.

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

Installing the IDE is one way to get the runtime. For non-developer machines, a "redistributable" installer package from Microsoft should be used instead.

安装IDE是获得运行时的一种方法。对于非开发人员的机器,应该使用来自Microsoft的“可再分发”安装程序包。

Here is one VB6 runtime installer from Microsoft. I'm not sure if it will be the right version for your components:

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

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

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