我的公司有一个使用 Crystal Reports 7 的 VB6 应用程序,客户要求将其安装在 Windows 7 32 位上。它当前安装在客户端的 Windows XP 32 位 SP2 计算机上。与数据库的连接是通过另一台服务器上的 SQL Server 2000 实例的 ODBC 完成的。
在 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,开发计算机上的 system32 文件夹中的版本(WinXP 32 位)是 6.1.97.82。但是,如果这是问题所在,那么它目前肯定行不通吗?
- http://support.microsoft.com/kb/184898 - 我不确定如何确认这就是问题
最后,由于复杂性,我不允许对此应用程序进行代码更改。即使我是,我也不是 VB6 程序员,只是获得了大力支持项目的人!如果需要更改代码,那么我将不得不使用 WinXP 模式进行研究。
更新:我在 XP 模式下遇到同样的错误。这是一个带有 SP3 的 Win XP 虚拟机。它在 Win XP SP2 VM 上运行,SP3 中是否有可能导致这种情况发生?或者这只是 XP 模式的事实?
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.
On Windows 7, the installation works fine, however when you try to open the application, the error is given.
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
- 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.
- 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/184898 - I'm not sure how to confirm that this is the issue
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.
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?
发布评论
评论(4)
我遇到了同样的错误,但我通过在 C:\Windows\SysWOW64 中使用 regsvr32.exe 解决了。
因为我们使用x64系统。因此,如果您的计算机也是 x64,则 ocx/dll 也必须使用 regsvr32 x64 版本注册
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
安装中缺少 msrdo20.dll 文件。
根据 Windows Vista、Windows Server 2008 和 Windows 7 上的 Visual Basic 6.0 支持声明 该文件应与应用程序一起分发。
我不确定为什么不是,但我的解决方案是将文件放置在计算机上的某个位置,并在命令行中使用 regsvr32 注册它,例如:
在理想的情况下,您可以将其与可再发行组件一起打包。
The file msrdo20.dll is missing from the installation.
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.
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:
In an ideal world you would package this up with the redistributable.
此下载修复了我的 VB6 EXE 和 Access 2016(使用 ACEDAO.DLL)运行时错误 429。我花了 2 天时间才解决它,因为导致 429 的原因有很多
。 microsoft.com/en-ca/download/details.aspx?id=13255" rel="nofollow">http://www.microsoft.com/en-ca/download/details.aspx?id=13255
引用自链接:
“此下载将安装一组组件,可用于促进 2010 Microsoft Office System 文件和非 Microsoft Office 应用程序之间的数据传输”
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.
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"
您说安装 VB6 IDE 后它就可以工作,因此问题可能是您尝试使用的组件取决于所安装的 VB6 运行时。
默认情况下,Windows 上未安装 VB6 运行时。
安装 IDE 是获取运行时的一种方法。对于非开发人员计算机,应使用 Microsoft 的“可再发行”安装程序包。
这是 Microsoft 提供的一个 VB6 运行时安装程序。我不确定它是否适合您的组件版本:
http://www.microsoft.com/downloads/en/details.aspx?FamilyID=7b9ba261-7a9c-43e7-9117-f673077ffb3c
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.
The VB6 runtime isn't installed on Windows by default.
Installing the IDE is one way to get the runtime. For non-developer machines, a "redistributable" installer package from Microsoft should be used instead.
Here is one VB6 runtime installer from Microsoft. 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