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

Windows 7 让VB6 ADO应用程序在Windows7中工作,windows-7,vb6,ado,Windows 7,Vb6,Ado,我继承了几个旧的VB6应用程序,这些应用程序目前无法在.NET中重写。这些旧的应用程序都使用ADO,在我的XP机器上可以很好地编译。由于切换到Windows7机器,应用程序可以很好地编译,但是当它们被部署(在XP机器上)时,我会出错。这是本Microsoft文章讨论的一个已知问题: 本文非常详细地解释了一种变通方法,它涉及复制“.TLB”文件并使用“regtlibv12”注册它。当我尝试注册它时,我收到以下错误消息: C:\Program Files\Common Files\System\a

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

本文非常详细地解释了一种变通方法,它涉及复制“.TLB”文件并使用“regtlibv12”注册它。当我尝试注册它时,我收到以下错误消息:

C:\Program Files\Common Files\System\ado\msado60\u Backcompat.tlb的注册表类型库失败:80029c4a

我还尝试使用Windows文件夹中的旧“regtlib.exe”注册此文件,但出现以下错误:

加载C:\Program Files\Common Files\System\ado\msado60\u Backcompat.tlb的类型库失败:80029c4a

因为这个原因,我不能继续工作了。我将非常感谢任何人能给我指导如何正确注册此文件


提前谢谢你

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

C:\Program Files\Common Files\System\ado
然后在VB6 IDE中打开一个新项目(提升,即作为管理员)。选择项目|参考。。。然后单击浏览按钮。导航到新的.TLB文件并将其打开。选中该框以选择项目并关闭“引用”对话框

现在应该注册了


如果不顾一切,请尝试。

您可能将该文件下载为
C:\temp\Msado60\u Backcompat\u i386.tlb
,但没有重命名它。该示例用于注册
C:\temp\Msado60\u Backcompat.tlb
(注意,没有
\u i386


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

只需根据Microsoft发布的最新信息更新此答案列表,它以更直接的方式解决了此问题。这个补丁使得在构建机器上部署变得更加容易,同时也解决了底层操作系统的问题


有关该修补程序的更完整图片,请参见以下内容。

我讨厌这个问题。我目前只使用虚拟Windows XP计算机编译ADO相关的内容。请查看事件日志,了解regtlibv12命令失败的原因。你是否以管理员的身份启动了你的cmd窗口?这让我困惑了很长一段时间,很高兴知道我不是唯一一个!很好的建议,鲍勃。我能够成功地在我的项目中添加引用。然而,它并没有为其他项目“注册”它——我必须手动将它添加到每个项目中。这比我以前的解决方案(使用XP虚拟机构建应用程序)好10倍。非常感谢您的解决方案!转到
C:\ProgramFiles(x86)\Microsoft Visual Studio\VB98
,然后右键单击
VB6.EXE
。选择
以管理员身份运行
。重复回答中的步骤以永久注册TLB.wqw-您的建议效果良好。一旦我遵循了你的程序,TLB似乎已经永久注册了。非常感谢!是的,wqw所建议的是,经营一些高尚的东西意味着什么。顺便说一句,VB6.exe应该始终在提升状态下运行,以确保可靠运行,因为它需要调试权限,并在工作时进行注册。要执行此操作,请向其添加提升清单或导航到VB6.exe,单击鼠标右键,然后在“属性”对话框的“兼容性”选项卡上选中“以管理员身份运行此程序”。有关更新的解决方案,请参阅此处的答案(),微软已经删除了公认的answerGood point推荐的解决方案-我在下载文件后没有重命名该文件,并且说明中提到注册该文件时没有使用“_i386”。因为我现在已经开始工作了,所以我不打算撤销任何东西,但这是一个很好的建议。