Вы видите несоответствие, потому что думаете, что используете одно и то же в обоих случаях, но это не так.
У вас есть два разных элемента, которые работают вместе для запуска ваших скриптов: хост скриптов и механизм скриптов.Хост сценария - это исполняемый файл, который инициализирует механизм сценариев, который работает с используемым языком.При обычной установке клиентской ОС у вас есть как минимум три хоста скриптов (wscript.exe
, cscript.exe
, mshta.exe
), которые могут использовать два разных скриптовых движка (VBScript
и JScript
).
WScript.CreateObject
- это метод объекта WScript
, предоставляемый хостом сценария (cscript.exe
или wscript.exe
), чтобы позволить механизму сценариев (как сказано, VBScript
и JScript
являются родными дляОС, но вы можете установить другие механизмы) создание экземпляра COM-объекта.
CreateObject
(здесь не WScript
) - это функция механизма сценариев VBScript
, не связанная с объектом WScript
или узлом сценария.
Оба имеют одно и то же имя, но это не одно и то же.Вызов функции CreateObject
в VBScript
равен «эквиваленту» для использования new ActiveXObject( ... )
в JScript
.В обоих случаях вы используете то, что предоставляет механизм сценариев, а не то, что предоставляет узел сценариев.
Например, вы можете без проблем использовать любой из двух (CreateObject
или new ActiveXObject( ... )
) внутри файла .hta
, поскольку они являются частью механизма сценариев, но вы не можете использовать WScript.CreateObject
в файле .hta
, поскольку хост сценария (mshta.exe
) не предоставляет объект WScript
для механизма сценариев, выполняющего код.