32位ActiveX DLL在64位操作系统上的问题

3
我正在尝试将一个经典的ASP网站移植到64位Windows 2008服务器上。目前我遇到的问题是(如果/当我解决这个问题后,可能还会有其他问题),该网站依赖于一个旧的VB6 DLL(32位),并且出现了臭名昭著的“ActiveX组件无法创建对象”错误。
我尝试通过尝试让它与一个简单的VBS脚本文件一起工作来将IIS7排除在外,但结果仍然是相同的。
这个DLL唯一的依赖项是ADO 2.6,从我所读的内容来看,这已经不被支持,也不需要用于Windows 2008,因为WDAC已包含并取代了MDAC。
我使用以下内容来注册我的组件:
C:\Windows\SysWOW64\regsvr32.exe "C:\MyVb6Com.dll"

我检查了注册表,一切都正确。我的VBS文件也很简单:

CreateObject("MyVb6Com.Session")

它会立即抛出错误:

ActiveX component can't create object: 'MyVb6Com.Session'

在IIS方面,我已经尝试更改应用程序池的设置以启用32位应用程序,但这也没有帮助(当然,如果我无法使用VBS文件工作,这也不会有任何区别)。非常感谢您的任何帮助。

1
确保您使用32位的WScript测试VB脚本。双击将使用64位。 - vcsjones
谢谢,vcsjones。我实际上一直在使用64位版本,但是一旦我切换到32位,它就可以工作了。然后我再次尝试了网站,奇怪的是它也可以工作了。所以当我尝试让VB脚本工作时,我做的某些事情解决了IIS问题。太糟糕了,我不知道那是什么。感谢您的帮助。如果您不介意,请将此作为答案,并标记它,因为它有助于我的故障排除。 - Jerad Rose
呃,只要它能工作就好 :-) - vcsjones
2个回答

2

确保您使用32位的WScript测试VB脚本。双击会使用64位 - 这有助于诊断您的问题。


如上所述,这就是我成功运行VB脚本的原因。不幸的是,当我尝试该网站时,我的问题已经被我采取的各种步骤之一或多个解决了,因此我不确定根本问题/解决方案是什么。如果我弄清楚了,我会更新原始帖子。再次感谢vcsjones提供的帮助。 - Jerad Rose

2
在驱动您的IIS7网站的应用程序池中,选择“高级设置”,在顶部附近将“启用32位应用程序”设置为True。
除非设置了此选项,否则64位计算机上的IIS7将不使用32位DLL。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接