Microsoft: обновления Windows 11 нарушили совместимость со старыми приложениями JScript

301 комментарии
После перехода на новый движок JScript9Legacy в Windows 11 Microsoft столкнулась с проблемами совместимости устаревших приложений и веб-компонентов. Компания объяснила причины изменений, направленных на повышение безопасности, и опубликовала инструкцию по восстановлению прежнего поведения через параметры реестра

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.

Автор:
Комментарии и отзывы

Нашли ошибку?

Новое на сайте