重新编译后,VB6 App将无法在Server 2008上运行

时间:2011-03-29 03:29:57

标签: vb6 windows-server-2008 adodb mdac

我正在尝试移动网络服务器。我们的应用程序(善良)是在1998年(我认为)在VB6中写的。我已经开始使用我们的新服务器(Windows Server 2008 R2 64位)了。但是,当我在我的机器上获取源代码(Windows 7 64位),并将exe传输到服务器时,应用程序在尝试使用此错误连接到数据库时会爆炸:“错误430(类不支持自动化或不支持预期的接口)“

该项目引用Microsoft Activex Data Objects 2.8 Library。错误的行是

Set conn = New adodb.Connection

所以,它实际上并没有尝试连接到数据库,而是在尝试创建对象时纯粹爆炸。

任何人都有过这种错误的经历吗?或者对我有什么建议?谷歌有几种可能性,但没有一种可能性。他们中的大多数都与公共控制和使用“项目兼容性”有关 - 但我的应用程序以“无人值守执行”运行,因此我无法选择(它在项目属性中完全禁用。)

1 个答案:

答案 0 :(得分:4)

这是微软在SP1中引入的MDAC的重大变化。看看这个MSDN Forum Thread。它有一些解决方法的建议。截至目前,微软尚未解决此问题。

我在32位Windows 7上遇到了这个问题,最终回滚了SP1。

其中一个建议是将更新的(损坏的)mdac dll替换为未服务的打包机:

  1. 打开Regedit并找到密钥HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\TypeLib\{2A75196C-D9EB-4129-B803-931327F72D5C}

  2. 右键单击,权限,高级,所有者,将所有者更改为管理员,单击“确定”,“确定”

  3. 运行C:\Windows\Microsoft.NET\Framework\v4.0.30319\regtlibv12 -u "%CommonProgramFiles(x86)%\system\ado\msado28.tlb"

  4. 将{7}从Win7 RTM / Win2008R2 RTM复制到本地计算机,请记下下一步的文件夹。

  5. 运行msado28.tlb

  6. 这些步骤适用于64位窗口。对于32位调整路径应该是相同的。