Microsoft признала существование проблемы совместимости JScript в Windows 11, вызванной изменениями в движке, ориентированными на повышение безопасности.
На прошлой неделе Microsoft выпустила обновления KB5094126 и KB5093998 для Windows 11 в рамках «Вторника патчей». После этого компания также опубликовала сопутствующие динамические обновления KB5094149, KB5095971 и KB5094156. Пока Microsoft признала две известные проблемы, появившиеся после релиза: сбои в работе приложений Office, а также ошибку, связанную с «Корзиной». Однако не исключено, что проблем может быть больше.
Обновления безопасности Windows, июнь 2026
| ОС Windows | Сборка | Версия | Канал | Обновление | ISO-образы | Доступно |
|---|---|---|---|---|---|---|
| Windows 11 | 28000.2269 | 26H1 | Stable | KB5095051 | ISO (Microsoft) | 2026-06-09 |
| Windows 11 | 26200.8655 | 25H2 | Stable | KB5094126 | ISO (Microsoft) | 2026-06-09 |
| Windows 11 | 26100.8655 | 24H2 | Stable | KB5094126 | ISO (Microsoft) | 2026-06-09 |
| Windows 11 | 22631.7219 | 23H2 | Stable | KB5093998 | ISO (UUP) | 2026-06-09 |
| Windows 10 | 19045.7417 | 22H2 | Stable | KB5094127 | ISO (UUP) | 2026-06-09 |
Microsoft наконец признала проблему, которая существует уже почти год. В июле 2025 года компания внесла изменение в актуальные версии Windows 11: был выполнен переход на JScript9Legacy в Windows 11, версия 24H2 и более новых релизах. Поэтому после выхода версии 25H2 в октябре 2025 года JScript9Legacy также остался включённым по умолчанию. В результате с тех пор наблюдается проблема совместимости.
Зачем Microsoft перешла на новый движок
За счёт перехода на JScript9Legacy Microsoft хотела повысить безопасность современных ПК Windows, сократив число уязвимостей, связанных с устаревшими сценариями, включая межсайтовый скриптинг (XSS). Эксплойты XSS позволяют злоумышленникам внедрять вредоносный код на легитимные сайты и выполнять его, когда потенциальная жертва загружает такой сайт. Поэтому новый движок JScript9Legacy ввёл более строгие политики выполнения и улучшенную обработку объектов, что должно помогать снижать риск таких атак.
Microsoft опубликовала новую статью поддержки с подробным описанием проблемы. Компания сообщает, что глобальные определения JScript и контекст выполнения могут не сохраняться между скриптами, из-за чего могут ломаться старые зависимые приложения и веб-компоненты, которые полагались на это устаревшее поведение.
В статье Microsoft подтвердила, что проблема связана с отказом от старого движка jscript9.dll в пользу jscript9legacy.dll. Новый движок был разработан для устранения уязвимостей и усиления безопасности, но при этом он меняет способ работы JScript с контекстом выполнения. В результате функции и определения, загруженные одним скриптом, могут быть недоступны для последующих скриптов после завершения выполнения.
Компания отмечает, что некоторые приложения корректно работали в более ранних версиях Windows, потому что старый движок JScript автоматически сохранял глобальные определения и состояние выполнения между скриптами. Однако в новой модели такое поведение по умолчанию отключено, из-за чего некоторые устаревшие рабочие нагрузки и скрипты, зависящие от полифилов, могут перестать работать.
Как восстановить совместимость через реестр
Microsoft устранила проблему в обновлении KB5077241, однако исправление не было автоматически включено в последующих обновлениях. Поэтому администраторам необходимо вручную включить постоянный контекст выполнения JScript с помощью параметра реестра, которым компания поделилась сегодня. Конфигурацию можно применить как к отдельным процессам, так и ко всей системе через ключ реестра FEATURE_ENABLE_PERSISTENCE.
Сделать это можно следующим образом:
- Выполните следующую команду, чтобы создать ключ реестра для управления функцией:
reg add "HKLM\Software\Policies\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_ENABLE_PERSISTENCE"
- В этом ключе создайте новое значение DWORD (32 бита).
- Настройте значение:
- чтобы включить сохранение контекста только для отдельных процессов, в качестве имени параметра укажите имя исполняемого файла приложения (например,
myapp.exe) и задайте ему значение 1. Так нужно сделать для каждого целевого процесса; - чтобы включить сохранение контекста для всех процессов, добавьте параметр с именем * (звёздочка) и задайте ему значение 1.
- чтобы включить сохранение контекста только для отдельных процессов, в качестве имени параметра укажите имя исполняемого файла приложения (например,
Официальная статья поддержки доступна на сайте Microsoft.
