4

我正在尝试移动 Web 服务器。我们的应用程序(善良)是在 1998 年(我认为)用 VB6 编写的。我已经让它在我们的新服务器(Windows Server 2008 R2 64 位)上运行。但是,当我在我的机器(Windows 7 64 位)上获取源代码并将 exe 传输到服务器时,当应用程序尝试连接到数据库时出现以下错误:“错误 430(类不支持自动化或不支持预期的接口)”

该项目引用了 Microsoft Activex 数据对象 2.8 库。错误的行是

Set conn = New adodb.Connection

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

有人对这种错误有任何经验吗?或者对我有什么建议?谷歌有几种可能性,但都没有成功。它们中的大多数都与通用控件和使用“项目兼容性”有关——但我的应用程序以“无人值守执行”运行,所以我不能选择它(它在项目属性中完全禁用。)

4

1 回答 1

4

这是 Microsoft 在 SP1 中引入的对 MDAC 的重大更改。查看此MSDN 论坛主题。它有一些解决方法的建议。到目前为止,微软还没有修复。

我在 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. 从 Win7 RTM/Win2008R2 RTM复制msado28.tlb到本地机器,记下下一步的文件夹。

  5. C:\Windows\Microsoft.NET\Framework\v4.0.30319\regtlibv12 "{path}\msado28.tlb"

这些步骤适用于 64 位窗口。对于 32 位,应该与路径调整相同。

于 2011-03-29T13:23:12.657 回答