我有一个大的代码库(主要是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
提前致谢。
答案 0 :(得分:2)
我认为你默认运行的是64位版本的CScript和Powershell,但MSXML是一个32位组件。
这是一个链接,解释如何在64位操作系统上启动32位版本的Powershell:Starting the 32-Bit Version of Windows PowerShell