让 VB6 ADO 应用程序在 Windows 7 中工作

Posted

技术标签:

【中文标题】让 VB6 ADO 应用程序在 Windows 7 中工作【英文标题】:Getting VB6 ADO application to work in Windows 7 【发布时间】:2011-10-25 01:25:33 【问题描述】:

我继承了几个目前无法在 .NET 中重写的旧 VB6 应用程序。这些旧应用程序都使用 ADO,并且在我的 XP 机器上编译得很好。由于切换到 Windows 7 机器,应用程序编译得很好,但是当它们被部署(在 XP 机器上)时,我得到了错误。这是这篇 Microsoft 文章讨论的一个已知问题:

http://support.microsoft.com/kb/2517589

文章对解决方法进行了非常详细的解释,其中涉及复制“.TLB”文件并使用“regtlibv12”注册它。当我尝试注册它时,我收到以下错误消息:

C:\Program Files\Common Files\System\ado\msado60_Backcompat.tlb 的RegisterTypeLib 失败:80029c4a

我也尝试在 Windows 文件夹中使用旧的“regtlib.exe”进行注册,但出现此错误:

C:\Program Files\Common Files\System\ado\msado60_Backcompat.tlb 的 LoadTypeLib 失败:80029c4a

因此,我无法继续解决此问题。任何人都可以就如何正确注册此文件给我任何指导,我将不胜感激。

提前谢谢你!

【问题讨论】:

我讨厌这个问题。我目前正在使用虚拟 Windows XP 机器来编译 ADO 相关的东西。 检查事件日志,了解 regtlibv12 命令失败的原因。您是否还以管理员身份启动了 cmd 窗口? 这个问题困扰了我很长一段时间,很高兴知道我不是唯一一个! 【参考方案1】:

将 .TLB 文件放在适当的位置,例如

C:\Program Files\Common Files\System\ado

然后在 VB6 IDE 中打开一个新项目(提升权限,即以管理员身份)。选择 Project|References... 然后单击 Browse 按钮​​。导航到新的 .TLB 文件并打开它。选中该框以选择项目并关闭“引用”对话框。

现在应该注册了。

如果绝望,试试VB Type Library Registration Utility。

【讨论】:

伟大的建议,鲍勃。我能够在我的项目中成功添加引用。但是,它并没有为其他项目“注册”它——我必须手动将它添加到每个项目中。这比我以前的解决方案(使用 XP VM 构建应用程序)好 10 倍。非常感谢您的解决方案! 转到C:\Program Files (x86)\Microsoft Visual Studio\VB98 并右键单击VB6.EXE。选择Run as administrator。重复回答中的步骤以永久注册 TLB。 wqw - 你的建议很有效。一旦我按照您的程序进行操作,TLB 似乎已永久注册。非常感谢! 是的,wqw 建议的是运行提升的东西意味着什么。顺便说一句,VB6.exe 应该始终在提升的情况下运行以实现可靠操作,因为它需要调试权限并在您工作时注册内容。为此,您向其中添加一个提升清单或导航到 VB6.exe,右键单击并在“属性”对话框的“兼容性”选项卡上选中“以管理员身份运行此程序”。 在此处查看答案 (***.com/a/9824958/61989) 以获取更新的解决方案,Microsoft 已删除已接受答案推荐的解决方法【参考方案2】:

您可能将文件下载为C:\temp\Msado60_Backcompat_i386.tlb 并且没有重命名它。该示例用于注册C:\temp\Msado60_Backcompat.tlb(注意,不是_i386)。

使用正确的文件名运行命令。

【讨论】:

好点-下载后我没有重命名文件,并且说明提到在没有“_i386”的情况下注册它。由于我现在正在使用它,我不打算撤消任何操作,但这是一个很好的建议。【参考方案3】:

只是为了根据最新信息更新此答案列表,Microsoft 发布了KB 2640696,它以更直接的方式解决了此问题。此补丁使在您的构建机器上部署变得更加容易,并解决了低级操作系统问题。

更完整的补丁图片可以在以下blog post找到。

【讨论】:

以上是关于让 VB6 ADO 应用程序在 Windows 7 中工作的主要内容,如果未能解决你的问题,请参考以下文章

用于 TLS1.2 的 VB6 应用程序 ado 连接

VB6 ADO 连接 - 如何检查是不是在事务中?

在 Windows 7 / 8 / 10 上安装 VB6 [重复]

VB6 IDE 是不是在 Windows 7 / 8 / 10 64 位上运行?

VB6 IDE是否在Windows 7/8/10 64位上运行?

Windows 7 中 VB6 的 .NET COM 问题:事件不起作用