У Chrome, Edge и прочих Chromium-подобных браузеров в старых неподдерживаемых сборках Windows 10 и 11 примерно с версий 130+ начались проблемы.
Сначала отвалилось всё онлайн-видео, как следствие невозможности воспризводить аудио. Затем становилось всё хуже и хуже, пока браузеры полностью не перестали отображать что-либо - ошибки STATUS_BREAKPOINT абсолютно на всех страницах, даже edge://.../chrome://... и настроек, сбои при загрузке всех плагинов.
При анализе в отладчике оказалось, что песочница (sandbox) в новых версиях несовместима со старыми ОС и в них не работает.
Костыль в виде добавления ключа --no-sandbox в ярлыки браузеров помогли лишь частично - браузеры заработали при запуске их через ярлык, но при запуске напрямую либо другими процессами/системой - те же вилы, ничего не работает.
Edge ещё и проверяет свою целостность и имя файла при запуске, что создало дополнительные трудности.
И, что самое плохое, отвалился и WebView2, а вместе с ним - куча программ, которые его используют (я, например, сходу даже установщик Adobe запустить не смог).
Засел на пару вечеров с Claude. Наваял врапперы и расширение для контекстного меню, которые позволяют обойти проблему.
Установка - install.bat, удаление - uninstall.bat. Естественно, всё запускать от админа/с админскими правами.
Запуски MS Edge и Chrome, как и всех их дочерних процессов, теперь происходят нормально с отключенным sandbox.
Работает через механизм IFEO (Image File Execution Options). Врапперы прописываются в реестр для msedge.exe и chrome.exe в их IFEO как дебаггеры, и запуск и контроль работы происходит с их помощью.
Исходники в комплекте.
Зачем нужно расширение для контекстного меню, как ставить/удалять, написано ниже под спойлером.
► Показать
WebView2ContextMenu - управление флагом --no-sandbox для WebView2 через контекстное меню
Многие современные приложения используют компонент Microsoft Edge WebView2 (Chromium-движок, встраиваемый в программы для отображения контента). В ряде старых сборок ОС Windows 10 и 11 WebView2 отказывается нормально запускаться из-за проблем с песочницей (sandbox).
В таких случаях приложение с WebView2 либо не открывает встроенное окно, либо падает при инициализации.
Установка "no-sandbox" в любом виде в переменных окружения WEBVIEW2_ADDITIONAL_BROWSER_ARGUMENTS, что пользовательских, что системных, не работает.
Рабочий обходной путь - запуск WebView2 с флагом --no-sandbox. Но задавать этот флаг вручную для каждого приложения неудобно: нужно лезть в реестр, знать точное имя исполняемого файла и правильную ветку политик.
WebView2ContextMenu решает эту задачу: добавляет флаг в пару кликов прямо из проводника Windows.
Как это устроено:
WebView2 читает дополнительные аргументы запуска из ветки политик реестра:
HKLM\SOFTWARE\Policies\Microsoft\Edge\WebView2\AdditionalBrowserArguments
Значение задаётся в формате:
"<имя_исполняемого_файла>" = "--no-sandbox"
Т.е., можно указать, какому именно приложению нужно передать флаг.
Поскольку речь идёт о ветке HKLM\SOFTWARE\Policies\..., для записи требуются права администратора. Поэтому действие запускается с запросом UAC (повышение прав через runas), а результат сообщается пользователю.
Расширение контекстного меню интегрируется в проводник Windows и добавляет в контекстное меню файлов пункты:
«Добавить --no-sandbox для WebView2»
«Убрать --no-sandbox для WebView2»
Меню появляется при клике правой кнопкой мыши по файлам следующих типов:
.exe - исполняемые файлы;
.dll - библиотеки (на всякий случай).
При выборе пункта расширение определяет имя выбранного файла и добавляет флаг в реестр.
Написан на C++. Используются только системные библиотеки Windows: shell32, shlwapi, ole32, oleaut32, advapi32, uuid.
Установка:
Из командной строки, запущенной от имени администратора:
WV2CMinstall.bat
После регистрации новые пункты сразу доступны в контекстном меню файлов .exe, .dll. Перезагрузка не требуется.
Работает также и с ярлыками приложений, например, на рабочем столе.
Рекомендуется положить DLL в постоянное расположение (например, C:\WV2ContextMenu), так как путь к файлу прописывается в реестр при регистрации.
Удаление:
Тоже из консоли администратора:
WV2CMuninstall.bat
Команда убирает расширение из контекстного меню. После этого файл DLL можно удалить.
Обратите внимание: удаление расширения не откатывает уже добавленные флаги --no-sandbox. Если вы добавляли флаги для конкретных приложений, снимите их заранее через пункт «Убрать --no-sandbox для WebView2» либо вручную почистите ветку HKLM\SOFTWARE\Policies\Microsoft\Edge\WebView2\AdditionalBrowserArguments.
WebView2ContextMenu - инструмент для тех, кто сталкивается с проблемами запуска приложений на WebView2 в нестандартных окружениях. Он превращает возню с реестром и политиками в два пункта контекстного меню, работает без внешних зависимостей и легко ставится/удаляется одной командой.