如果我在win7上编译VB6应用程序,ADODB.Connection错误“Class不支持自动化或不支持预期的接口”

时间:2011-04-28 17:48:13

标签: vb.net automation 64-bit

Class does not support Automation or does not support expected interface

我在Win7 x64计算机上编译了一些VB6代码,结果.exe将无法在任何其他计算机上正常运行。

VB6代码只是一个带有一个按钮的新模板.exe文件,对“Microsoft ActiveX Data Objects 2.6 Library”的引用以及按钮按下事件中的以下代码:

Dim db
Set db = New ADODB.Connection

它在我的机器上正常运行,但没有其他人(甚至其他Win7 x64机器)(更新:我发现其他两个用户运行,其中一个是Jeff Atwood!,但大多数机器都有同样的问题)

我检查了两台机器上的引用屏幕,看看引用是否失败(虽然它不会编译然后编译正常)。一切看起来都合法。在64位计算机上,引用进入SysWow64而不是system32。

我甚至在Vista 64位机器上成功编译了这个并且运行正常。它只是Windows 7上的编译,然后在发生错误的任何其他机器上运行。

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

comp checker results on box

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

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

2 个答案:

答案 0 :(得分:19)

这是Windows 7 SP1问题。有关解决方法,请参阅http://support.microsoft.com/kb/2517589

还有其他方法:

  1. 改为使用ADO 2.8(来自Win 7 RTM 磁盘)
  2. 使用后期绑定(可能是 最简单的)
  3. 有一百万件事 人们正在试着这么久 和愤怒的线程:Breaking change in MDAC ADODB COM components in Windows 7 Service Pack 1
  4. 另外,x64 Win 7不支持msado15.dll,如下所示:http://support.microsoft.com/kb/983246。这是一个很大的页面,只需搜索 msado15.dll

答案 1 :(得分:1)

使用this tool

查看两台计算机中的MDAC组件版本

另外请确保您使用的是相同的SQL Server(猜测)版本数据库,因为我注意到SQL Server 2008 x64的处理不同于处理连接的先前版本(使用VB6时)