让 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 中工作的主要内容,如果未能解决你的问题,请参考以下文章
在 Windows 7 / 8 / 10 上安装 VB6 [重复]
VB6 IDE 是不是在 Windows 7 / 8 / 10 64 位上运行?