MSXML4.0 в Windows Server 2008r2 - невозможно создать объект MSXML2.ServerXMLHTTP.4.0
У нас есть большая кодовая база (в первую очередь, vbscript), которую я перевожу с сервера Windows 2000 (32-разрядный) на Windows 2008 R2 (64-разрядный). Большая часть этого кода основана на синтаксическом анализаторе MSXML 4.0, и, к сожалению, у нас нет возможности использовать версию 3 или 6 (по причинам, выходящим за рамки этого вопроса).
Я установил версию MSXML 4.0 в соответствии с инструкциями на http://www.microsoft.com/en-us/download/details.aspx?id=15697 и убедился, что он установлен правильно. "msxml4.dll" существует в "c:\windows\syswow64", и в реестре есть ключ HKEY_CLASSES_ROOT\Msxml2.ServerXMLHTTP.4.0 . Я даже запустил regsrv32.exe против DLL, и он сказал, что он был зарегистрирован правильно.
Однако при попытке сделать
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 ответ
Я думаю, что вы используете 64-битные версии CScript и Powershell по умолчанию, но MSXML - это 32-битный компонент.
Вот ссылка, объясняющая, как запустить 32-разрядную версию Powershell в 64-разрядной ОС: Запуск 32-разрядной версии Windows PowerShell