Vb.net 如果我在win7上编译VB6应用程序,则ADODB.Connection错误为;类不支持自动化或不支持预期接口“;

Vb.net 如果我在win7上编译VB6应用程序,则ADODB.Connection错误为;类不支持自动化或不支持预期接口“;,vb.net,automation,64-bit,Vb.net,Automation,64 Bit,我在我的Win7 x64机器上编译了一些VB6代码,结果.exe无法在任何其他机器上正确运行 VB6代码只是一个新的template.exe文件,其中包含一个按钮、对“Microsoft ActiveX Data Objects 2.6 Library”的引用以及按钮按下事件中的以下代码: Dim db Set db = New ADODB.Connection 它在我的机器上正确运行,但没有其他机器(甚至其他Win7 x64机器)(更新:我发现它运行的还有两个用户,其中一个是Jeff Atw

我在我的Win7 x64机器上编译了一些VB6代码,结果.exe无法在任何其他机器上正确运行

VB6代码只是一个新的template.exe文件,其中包含一个按钮、对“Microsoft ActiveX Data Objects 2.6 Library”的引用以及按钮按下事件中的以下代码:

Dim db
Set db = New ADODB.Connection
它在我的机器上正确运行,但没有其他机器(甚至其他Win7 x64机器)(更新:我发现它运行的还有两个用户,其中一个是Jeff Atwood!,但大多数机器都有相同的问题)

我检查了两台机器上的references屏幕,以查看引用是否失败(但它不会编译,而且编译很好)。一切看起来都是合法的。在64位机器上,引用进入SysWow64而不是system32

我甚至在Vista 64位机器上成功编译了它,并使它正确运行。它只是在Windows7上编译,然后在发生错误的任何其他机器上运行

以下是在“我的盒子”上运行CompChecker的结果:

注册表信息:ADODB.Connection具有GUID HKEY_CLASSES_ROOT\CLSID{00000514-0000-0010-8000-00AA006D2EA4}


InprocServer32是%CommonProgramFiles%\System\ado\msado15.dll

使用检查两台计算机中的MDAC组件版本


还要确保您使用的是相同的SQL Server(猜测)版本数据库,因为我注意到SQL Server 2008 x64的工作原理与处理连接的早期版本(使用VB6时)不同这是Windows 7 SP1的问题。有关解决方法,请参阅

围绕这一点还有其他方法:

  • 改用ADO 2.8(来自Win 7 RTM 磁盘)
  • 使用后期绑定(可能是 (最简单)
  • 有一百万件事 人们已经试了很久了 和愤怒的线程:

  • 另外,还有一件事,x64 Win 7不支持msado15.dll,如下所示:。这是一个大页面,只需搜索msado15.dll

    我就有完全相同的问题。这是用来工作的,一定是MS更新之类的@马克,那就给这个问题投一票吧!奇怪的是,它能在Vista上工作,而不是在Windows7上。。您是否尝试过在禁用UAC或显式“以管理员身份运行”的情况下运行它?@jeff Win2003没有UAC或任何类似的功能。。。win2k3盒子才是问题的孩子。在win7上编译的应用程序在win7上运行良好。我认为它使用了“Mdac 2.7”,不确定win7是否支持它,但如果它在Vista上,我也会假设它是7。我在问题中添加了一些细节。太棒了。我使用backcompat.tlb解决方案在我的windows 7计算机上进行编译,因为代码中有太多的早期绑定引用,无法将它们更改为后期绑定。@Michael Pryor:很高兴听到这个问题得到解决!那么那笔漂亮的赏金呢?:)还不能做。必须等待一个小时(从你开始赏金起必须等待24小时)。如果我忘了,系统会自动给你。