简体   繁体   English

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

[英]How do I resolve “Run-time error '429': ActiveX component can't create object”?

My company has a VB6 application using Crystal Reports 7 which a client has asked to be installed on Windows 7 32 bit. 我的公司有一个使用Crystal Reports 7的VB6应用程序,客户端要求在Windows 7 32位上安装它。 It is currently installed on Windows XP 32bit SP2 machines at the client. 它目前安装在客户端的Windows XP 32位SP2计算机上。 Connection to the DB is done via ODBC to SQL Server 2000 instance on another server. 与DB的连接是通过ODBC到另一台服务器上的SQL Server 2000实例完成的。

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. 使用regsvr32注册所有dll和ocx文件。 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." 有些人不会注册,因为他们已经注册或者给出以下消息“确保”[name] .dll“是有效的DLL或OCX文件,然后再试一次。” I read this forum thread regarding this: http://social.msdn.microsoft.com/forums/en-US/vblanguage/thread/0653f685-4526-45d9-89f3-8c479a6b4c62 我读了这个论坛帖子:http://social.msdn.microsoft.com/forums/en-US/vblanguage/thread/0653f685-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. http://support.microsoft.com/kb/281848 - 与应用程序捆绑在一起的comdlg32.ocx是版本6.0.81.69,而dev机器(WinXP 32位)上system32文件夹中的那个是6.1.97.82。 However if this was the issue then surely it would not work currently? 但是,如果这是问题,那么肯定它目前不起作用?
  • 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! 即使我是,我也不是VB6程序员,只是得到了非常支持项目的人! If code changes are required, then I'll have to investigate using WinXP mode. 如果需要更改代码,那么我将不得不使用WinXP模式进行调查。

Update : I get the same error in XP Mode. 更新 :我在XP模式下遇到同样的错误。 That's a Win XP with SP3 VM. 这是一款带有SP3 VM的Win XP。 This runs on a Win XP SP2 VM, is there potentially something in SP3 that would have caused this to occur? 这是在Win XP SP2 VM上运行的,SP3中是否有可能会导致这种情况发生? Or is it just a fact of it being XP Mode? 或者只是它是XP模式的事实?

I got the same error but I solved by using regsvr32.exe in C:\\Windows\\SysWOW64. 我得到了同样的错误,但我通过在C:\\ Windows \\ SysWOW64中使用regsvr32.exe解决了。 Because we use x64 system. 因为我们使用x64系统。 So if your machine is also x64, the ocx/dll must registered also with regsvr32 x64 version 因此,如果您的机器也是x64,则ocx / dll也必须使用regsvr32 x64版本注册

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. 在一个理想的世界中,你可以用可再发行的方式打包它。

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" 来自链接的QUOTE:“此下载将安装一组可用于促进2010 Microsoft Office System文件和非Microsoft Office应用程序之间的数据传输的组件”

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. 默认情况下,Windows上未安装VB6运行时。

Installing the IDE is one way to get the runtime. 安装IDE是获取运行时的一种方法。 For non-developer machines, a "redistributable" installer package from Microsoft should be used instead. 对于非开发人员计算机,应使用Microsoft的“可再发行”安装程序包。

Here is one VB6 runtime installer from Microsoft. 这是Microsoft的一个VB6运行时安装程序。 I'm not sure if it will be the right version for your components: 我不确定它是否适合您的组件:

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 ActiveX组件无法创建对象(comReport) - ActiveX component can't create object (comReport) ActiveX 组件无法创建 object - ActiveX component can't create object scrrun.dll注册后,Scripting.FileSystem对象上的运行时错误429 - Run-time Error 429 on Scripting.FileSystem object after scrrun.dll registered ActiveX组件无法创建对象。 Excel VBA中的搭扣 - ActiveX component can't create object. Hasp in Excel VBA Regasm 不工作/ActiveX 组件无法创建对象 - Regasm is not working / ActiveX component can't create object ActiveX组件无法创建对象:在注册dll时没有名称空间的类会发生什么情况? - ActiveX component can't create object: what happens to classes that don't have a namespace when the dll is registered? 经典ASP和COM DLL在Server 2008 R2中不起作用(Microsoft VBScript运行时错误'800a01ad'ActiveX组件无法创建对象) - Classic ASP and COM DLL Does not work in Server 2008 R2 (Microsoft VBScript runtime error '800a01ad' ActiveX component can't create object ) 在运行时链接期间如何从DLL调用函数? - How do I call a function from my DLL during run-time linking? 我该如何解决此运行时错误? - How do i solve this run time error? 如何在ActiveX / COM对象中搜索方法? - How do I search an ActiveX/COM object for a method?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM