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

时间:2013-05-09 18:52:45

标签: com vbscript windows-server-2008-r2 msxml4

我有一个大的代码库(主要是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

提前致谢。

1 个答案:

答案 0 :(得分:2)

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

这是一个链接,解释如何在64位操作系统上启动32位版本的Powershell:Starting the 32-Bit Version of Windows PowerShell