2011-04-28 39 views
20

Class does not support Automation or does not support expected interface如果我编译Win7上一个VB6应用程序,具有“类不支持自动化或不支持预期的接口” ADODB.Connection错误

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

VB6代码只是一个按钮,一个新的模板.exe文件,引用“Microsoft ActiveX数据对象2.6库”,并在按钮按下事件下面的代码:

Dim db 
Set db = New ADODB.Connection 

它运行在正确我的机器,但没有其他人(甚至其他Win7 x64机器)(更新:我发现两个其他用户在哪里运行,其中一个是杰夫阿特伍德,但大多数机器有同样的问题)

我检查参考屏幕在两台机器上查看引用是否失败(它不会编译然后编译好)。一切看起来合法。在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 is%CommonProgramFiles%\ System \ ado \ msado15.dll

+4

我有完全相同的问题。这用于工作,必须是MS更新或其他东西! – 2011-05-04 13:44:23

+2

@Mark给这个问题upvote然后! – 2011-05-04 14:59:10

+0

奇怪的是,它可以在Vista上运行,而不是在Windows 7上运行。你是否尝试在禁用UAC的情况下运行它,或者使用明确的“以管理员身份运行”运行? – 2011-05-04 21:46:18

回答

19

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

这种情况有解决其他方面:

  1. 使用ADO 2.8,而不是(从Win 7的RTM 盘)
  2. 使用后期绑定(可能是 最简单)
  3. 有100万的事情这 人正试图在这个很长的 和愤怒螺纹:Breaking change in MDAC ADODB COM components in Windows 7 Service Pack 1

另外,x64 Win 7不支持msado15.dll,如下所列:http://support.microsoft.com/kb/983246。这是一个很大的页面,只需搜索msado15.dll

+0

太棒了。我使用backcompat.tlb解决方案在Windows 7机器上进行编译,因为代码中有太多的早期绑定引用将它们更改为迟绑定。 – 2011-05-11 19:11:59

+0

@迈克尔普赖尔:很高兴听到这个问题解决了!那么美丽的赏金怎么样? :) – 2011-05-11 19:58:57

+1

不能这样做。必须等待一个小时(自开始赏金起,必须等待24小时)。如果我忘记了,系统会自动获取它。 – 2011-05-11 20:23:05

1

检查出两台计算机上的MDAC组件的版本使用this tool

另外要确保你使用的是相同的SQL Server(猜测)版本的数据库,因为我注意到的SQL Server 2008 x64的工程型动物比以前的版本处理连接(使用VB6时)

+0

我给这个问题增加了一些细节。 – 2011-05-10 17:41:09

相关问题