Com Windows Server 2008r2上的MSXML4.0-无法创建对象MSXML2.ServerXMLHTTP.4.0

Com Windows Server 2008r2上的MSXML4.0-无法创建对象MSXML2.ServerXMLHTTP.4.0,com,vbscript,windows-server-2008-r2,msxml4,Com,Vbscript,Windows Server 2008 R2,Msxml4,我们有一个很大的代码库(主要是vbscript),我正在从Windows 2000(32位)服务器迁移到Windows 2008 R2(64位)。这段代码的大部分依赖于MSXML 4.0解析器,不幸的是,我们没有选择使用版本3或版本6(原因超出了本问题的范围) 我已经按照上的说明安装了MSXML的4.0版本,并验证了安装是否正确。“msxml4.dll”存在于“c:\windows\syswow64”中,注册表中的HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP.4.

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

我已经按照上的说明安装了MSXML的4.0版本,并验证了安装是否正确。“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
    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
在powershell中:

     $objAsp = New-Object -ComObject 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
    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

提前感谢。

我认为默认情况下您运行的是64位版本的CScript和Powershell,但MSXML是一个32位组件


这里有一个链接,解释如何在64位操作系统上启动32位版本的Powershell:

谢谢,我来试一试!您是否尝试在注册表中搜索
MSXML2.ServerXMLHTTP.4.0
?如果有,您可以使用其CLS Id[]创建。例如: