如何使用SysWOW64 \ cscript或wscript中的32位COM组件解决“灾难性故障”

时间:2010-03-09 00:54:23

标签: com vbscript syswow64

我正在尝试运行使用7年历史的第3方32位COM组件的VBScript脚本 在Windows Server 2008 R2上,使用命令行32位脚本主机SysWOW64 \ cscript.exe。当我在类上调用CreateObject时,它看起来是成功的,但是当我第一次尝试在对象上使用属性或方法(我已经尝试了几个不同的属性)时,它给了我“灾难性的失败”。我与SysWOW64 \ wscript.exe的结果相同,当然,我的错误信息是在msgbox而不是命令行窗口中。

我认为这必须专门针对64位脚本主机,因为以下内容:

  1. 等效的经典ASP脚本,调用相同的组件并使用95%的相同代码,在同一服务器上正常工作,IIS配置为支持32位COM。
  2. 相同的VBScript在32位Windows XP计算机和32位Windows Server 2003计算机上正常运行。
  3. 组件在我的64位Windows 7计算机上以完全相同的方式失败。
  4. 我的Google搜索此问题的解决方案主要是通过将COM组件放入Visual Studio的工具栏中解决了许多不同的问题。显然,该解决方案不适用于此。

    我的问题是:

    1. 来自调用COM组件的Windows脚本主机是否始终存在“灾难性故障”的核心问题?
    2. 配置管理单元或注册表中是否有位置需要进行类似于我必须对IIS应用程序池进行的更改以“启用32位应用程序”的更改?
    3. 我应该查看Server 2008 R2事件查看器中的常规位置,以查看是否有更多有关失败的详细信息,以防它是否特定于此组件?
    4. 提前致谢。

1 个答案:

答案 0 :(得分:3)

请勿阅读错误文本中的任何内容。 “灾难性故障”必定是有史以来最糟糕的HRESULT代码。程序员使用E_UNEXPECTED错误代码,这在COM编程中很常见。它通常表示“我不能做这个工作,但我不知道为什么”。当然,这并没有给你很多选择来找出原因。

它不太可能与在64位版本的Windows上运行直接相关。您正在使用32位脚本主机,它们可以很好地为COM服务器提供32位执行环境。更有可能的是,安装中存在某些不妥之处,某种缺失的组件。解决这个问题的唯一好方法是联系COM服务器的作者或供应商以获得支持。如果这不切实际,请考虑在引导早期版本Windows的虚拟PC中运行它。