1

我们有一个大型代码库(主要是 vbscript),我正在将其从 Windows 2000(32 位)服务器迁移到 Windows 2008 R2(64 位)。此代码的很大一部分依赖于 MSXML 4.0 解析器,不幸的是,我们没有使用版本 3 或 6 的选项(原因超出了此问题的范围)。

我已经按照http://www.microsoft.com/en-us/download/details.aspx?id=15697上的说明安装了 4.0 版的 MSXML,并验证它安装正确。“msxml4.dll”存在于“c:\windows\syswow64”中,并且注册表中有一个键位于 HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP.4.0 。我什至对 dll 运行了 regsrv32.exe,它说它已正确注册。

然而,当试图做

    Set objAsp = CreateObject("MSXML2.ServerXMLHTTP.4.0")

它失败了:

    Script: C:\test.vbs
    Line:   1
    Char:   1
    Error:  ActiveX component can't create object: 'MSXML2.ServerXMLHTTP.4.0'
    Code:   800A01AD
    Source:     Microsoft VBScript runtime error

在powershell中:

     $objAsp = New-Object -ComObject MSXML2.ServerXMLHTTP.4.0

它失败了:

    New-Object : Retrieving the COM class factory for component with CLSID {88D969C6-
    F192-11D4-A65F-0040963251E5} failed due to the following error: 80040154 Class not   
    registered (Exception from HRESULT: 0x80040154 (REGDB_E_CLASSNOTREG)).
    At line:1 char:11
    + $objAsp = New-Object -ComObject MSXML2.ServerXMLHTTP.4.0
    +           ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : ResourceUnavailable: (:) [New-Object], COMException
    + FullyQualifiedErrorId :  
    NoCOMClassIdentified,Microsoft.PowerShell.Commands.NewObjectCommand

提前致谢。

4

1 回答 1

2

我认为您默认运行的是 64 位版本的 CScript 和 Powershell,但 MSXML 是 32 位组件。

以下链接解释了如何在 64 位操作系统上启动 32 位版本的 Powershell:启动 32 位版本的 Windows PowerShell

于 2013-05-09T20:15:52.363 回答