Windows Script Host¶
Windows Script Host (WSH) — это компонент операционной системы Microsoft Windows, предназначенный для выполнения скриптов (сценариев) на различных языках программирования, в первую очередь VBScript (Visual Basic Scripting Edition) и JScript (реализация языка JavaScript от Microsoft). WSH предоставляет среду выполнения, которая позволяет автоматизировать задачи, управлять системными настройками и взаимодействовать с объектами Windows, не требуя компиляции кода в исполняемый файл. Компонент впервые был включён в состав Windows 95 (в составе Internet Explorer 3.0) и Windows NT 4.0, а затем стал стандартной частью всех последующих версий Windows, вплоть до Windows 11.
¶История
¶Предпосылки и создание
До появления WSH автоматизация задач в Windows была возможна в основном с помощью пакетных файлов (.bat, .cmd), которые имели ограниченные возможности по работе с файловой системой, реестром и сетевыми ресурсами. В середине 1990-х годов Microsoft стремилась расширить возможности скриптования, интегрировав его с объектной моделью Windows (COM). В 1996 году был выпущен Windows Script Host, который изначально назывался Windows Scripting Host. Первая версия (WSH 1.0) поставлялась с Internet Explorer 3.0 и поддерживала только VBScript и JScript.
¶Развитие
В 1997 году вышла WSH 2.0, которая была включена в состав Internet Explorer 4.0 и Windows 98. Эта версия добавила поддержку новых объектов, таких как WScript.Shell и WScript.Network, что значительно расширило возможности скриптов по управлению системой. В Windows 2000 и Windows XP WSH стал полноценным системным компонентом, а его версия (5.6) включала улучшенную поддержку отладки и безопасности. Последняя крупная версия, WSH 5.7, была выпущена в 2007 году для Windows Vista и более поздних систем. С тех пор Microsoft не выпускала новых версий WSH, сосредоточившись на развитии PowerShell, который стал основным инструментом автоматизации в Windows.
¶Архитектура и устройство
¶Компоненты
WSH состоит из двух основных исполняемых файлов:
wscript.exe— оконная версия, которая запускает скрипты в графическом режиме. При использовании этой версии скрипт может выводить диалоговые окна, запрашивать ввод данных и взаимодействовать с пользователем через GUI.cscript.exe— консольная версия, которая запускает скрипты в командной строке (текстовом режиме). Она предназначена для автоматизации задач, не требующих взаимодействия с пользователем, и выводит результаты в окно консоли.
Оба файла находятся в системной папке C:\Windows\System32\.
¶Языки и движки
WSH не является языком программирования, а представляет собой среду (хост), которая загружает и выполняет скрипты с помощью подключаемых языковых движков. По умолчанию в Windows встроены два движка:
- VBScript — диалект Visual Basic, ориентированный на автоматизацию.
- JScript — реализация JavaScript от Microsoft.
Пользователи могут устанавливать дополнительные движки для других языков, например, Perl, Python или Ruby, если они предоставляют COM-интерфейс, совместимый с WSH.
¶Объектная модель
WSH предоставляет скриптам доступ к объектной модели Windows через COM (Component Object Model). Ключевые объекты:
WScript— корневой объект, предоставляющий методы для вывода сообщений (Echo), завершения скрипта (Quit), создания других объектов (CreateObject) и работы с аргументами командной строки.WScript.Shell— объект для работы с реестром, ярлыками, запуска приложений, управления окнами и системными переменными окружения.WScript.Network— объект для управления сетевыми ресурсами: подключение/отключение сетевых дисков, принтеров, получение информации о текущем пользователе и домене.Scripting.FileSystemObject— объект для работы с файловой системой: чтение, запись, создание, удаление файлов и папок, работа с дисками.
¶Применение
¶Администрирование и автоматизация
WSH широко использовался системными администраторами для автоматизации рутинных задач:
- Создание и удаление учётных записей пользователей.
- Настройка параметров реестра.
- Управление службами Windows.
- Выполнение резервного копирования и синхронизации файлов.
- Настройка сетевых принтеров и дисков.
¶Логин-скрипты
В доменных сетях на базе Active Directory WSH применялся для выполнения скриптов при входе пользователя в систему. Эти скрипты могли автоматически подключать сетевые диски, устанавливать принтеры, настраивать параметры рабочего стола и выполнять другие задачи, заданные администратором.
¶Разработка и тестирование
Разработчики использовали WSH для быстрого прототипирования и тестирования идей, не требующих компиляции. Также WSH применялся для создания простых утилит, таких как конвертеры файлов, парсеры логов или инструменты для работы с COM-объектами.
¶Безопасность и критика
¶Уязвимости и вредоносное ПО
WSH стал одной из наиболее критикуемых функций Windows из-за своей роли в распространении вредоносного программного обеспечения. Поскольку скрипты VBScript и JScript выполняются в интерпретируемой среде, злоумышленники использовали WSH для:
- Распространения вирусов и червей. Например, знаменитый вирус «ILOVEYOU» (2000 год) распространялся через вложения электронной почты, содержащие скрипты VBScript. При запуске он заражал систему, перезаписывал файлы и рассылал себя по контактам.
- Выполнения произвольного кода. Скрипты могли запускать другие программы, изменять реестр, скачивать и устанавливать вредоносное ПО без ведома пользователя.
- Фишинга и кражи данных. Скрипты могли запрашивать пароли или перенаправлять пользователей на поддельные сайты.
¶Меры безопасности
Microsoft предприняла ряд мер для снижения рисков:
- В Windows Vista и более поздних версиях по умолчанию отключена возможность запуска WSH через двойной клик по файлу
.vbsили.jsв проводнике. Пользователь должен явно разрешить выполнение через диалоговое окно. - В Windows 10 и Windows 11 WSH по умолчанию отключён для новых установок, особенно в версиях для образовательных учреждений (Windows 10 Education, Windows 11 Education).
- Групповые политики позволяют администраторам полностью отключить WSH на компьютерах домена.
- Антивирусные программы и брандмауэры часто блокируют выполнение скриптов, загруженных из интернета.
¶Критика и устаревание
Несмотря на свою полезность, WSH подвергается критике за:
- Низкую безопасность. Интерпретируемый код легко анализируется и модифицируется злоумышленниками.
- Отсутствие развития. С 2007 года Microsoft не выпускает новых версий WSH, а VBScript и JScript постепенно выводятся из эксплуатации. В Windows 11 VBScript объявлен устаревшим компонентом.
- Сложность отладки. Встроенные средства отладки WSH ограничены по сравнению с современными средами разработки.
¶Замена и современное состояние
¶PowerShell
Основной заменой WSH в современной Windows является PowerShell — более мощная и безопасная среда автоматизации, основанная на .NET Framework. PowerShell предоставляет:
- Объектно-ориентированный конвейер.
- Встроенную поддержку управления системой, реестром, службами, Active Directory.
- Расширенные средства безопасности, включая политики выполнения скриптов (Execution Policy).
- Интеграцию с .NET, что позволяет использовать все возможности платформы.
¶Совместимость
Несмотря на устаревание, WSH по-прежнему поддерживается в Windows 10 и Windows 11 для обратной совместимости. Многие старые корпоративные приложения и скрипты продолжают использовать WSH, и их замена на PowerShell требует значительных усилий. Однако Microsoft рекомендует разработчикам и администраторам переходить на PowerShell для всех новых проектов.
¶Интересные факты
- WSH позволяет выполнять скрипты, написанные на разных языках в одном файле, используя тег
<script>в XML-подобном формате. - В Windows 98 и Windows Me WSH был встроен в операционную систему, но не имел графического интерфейса для управления.
- Некоторые утилиты, такие как
scrrun.dll(библиотека для работы с файловой системой), являются частью WSH и используются другими компонентами Windows.
¶Источники
- Microsoft Docs: Windows Script Host Overview
- Microsoft Security Response Center: WSH and Malware
- TechNet: Windows Script Host 5.7
- Wikipedia: Windows Script Host
- «Inside Windows Scripting Host» — статья в журнале Windows IT Pro (2000)