【问题标题】:Cannot use CreateObject from VB scripts on IIS Windows 7 64Bits无法在 IIS Windows 7 64Bits 上使用 VB 脚本中的 CreateObject
【发布时间】:2014-01-12 02:33:28
【问题描述】:

当我尝试在 Windows 7(64 位)机器上的 asp vb 脚本中创建 COM 对象时,我总是收到以下错误:

    Microsoft VBScript runtime error '800a01ad'
    ActiveX component can't create object
    /test/test.asp, line 7

我已经创建了像this tutorial这样的DLL文件

它曾经在 Windows 7 32 位上工作。 有没有办法解决这个问题?

【问题讨论】:

    标签: iis vbscript asp-classic


    【解决方案1】:

    如果您有权访问服务器的 IIS 管理器,则可以在应用程序池中启用 32 位应用程序

    http://help.webcontrolcenter.com/KB/a1114/how-to-enable-32-bit-application-pool-iis-7-dedicatedvps.aspx

    【讨论】:

    • 在我这样做之后,ODBC驱动程序出现了一些问题:ODBC驱动程序管理器指定的DSN包含驱动程序和应用程序之间的体系结构不匹配
    • 所以您正在使用 64 位驱动程序连接到数据库。启用 32 位组件似乎禁用了 32 位组件。您使用的是什么数据库,很可能有 32 位的替代品?
    • 我正在使用 Intersystems Caché 5.2.0.329.0.. =(
    • 恐怕我从来没有使用过缓存,但似乎有一个 32 位 ODBC 驱动程序可用。 intersystems.com/services-support/product-support/…
    • 您的解决方案效果很好!我发现我的代码的某些部分使用 ODBC 连接,并且它使用 32 位 ODBC,如此处所述:support.microsoft.com/kb/942976。我在 64 位 odbc 上再次配置,一切正常!非常感谢!
    【解决方案2】:

    在 Windows 64 中,64 位进程无法加载 32 位 dll。但是在 VB6 中(如果您按照指示的教程进行操作),您可以将进程中的 dll COM 组件转换为进程外的 32 位 exe COM 服务器。那么你在实例化你的组件时就没有问题了。

    【讨论】:

    • 好的,但是我该怎么做呢?
    • 如果您按照指示的教程进行操作,请执行相同操作,但更改项目类型。不要编译 ActiveXDll,而是选择 ActiveX exe。
    • 好吧,我想我做到了。现在我该怎么做第7步? 7- 我们需要在我们的机器上注册我们的 DLL 文件。打开 MS-DOS 命令行窗口并将目录更改为保存 dll 的位置。现在输入以下内容: regsvr32 myConnectionString.dll 您将获得一个成功注册的确认窗口……。我们完成了!
    • 我有一个 myConnectionString.exe
    • @UderMoreira:恭喜。现在是时候注册了:myConnectionString.exe /regserver。见How To Register and Unregister an Out-of-Process COM Component (ActiveX EXE)
    猜你喜欢
    • 2011-01-26
    • 1970-01-01
    • 1970-01-01
    • 2011-12-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-26
    • 2015-04-28
    相关资源
    最近更新 更多