Общие сведения о контейнеризации MSIX

MSIX использует модель контейнеризации для изоляции приложений от остальной части системы. В отличие от технологий контейнеров общего назначения (например, Docker), контейнеры MSIX не являются виртуальными машинами и не требуют отдельного образа ОС. Вместо этого Windows перенаправляет активность файловой системы и реестра приложения во время выполнения, поддерживая автономность приложений и позволяя им взаимодействовать с остальными компонентами Windows нормальным образом.

В этой статье объясняется модель изоляции, два уровня доверия, доступные для упакованных приложений, и преимущества этого подхода.

Что такое контейнеризация MSIX (и что не так)

При установке пакета MSIX Windows помещает файлы приложения в защищенное расположение (C:\Program Files\WindowsApps\), которое само приложение не может изменить. Во время выполнения Windows предоставляет приложению виртуализированное представление файловой системы и реестра: чтение осуществляется из места установки пакета, а записи перенаправляются в управляемые Windows пользовательские расположения.

Это означает:

  • Файлы установки приложения никогда не изменяются во время выполнения.
  • Состояние приложения хранится отдельно от двоичных файлов приложения — это делает процесс обновления, восстановления и удаления простым и надежным.

Замечание

Контейнеры MSIX — это функция Windows среды выполнения, а не отдельная операционная среда. Приложение выполняется как собственный процесс Windows — оно просто имеет виртуализированное представление определенных системных ресурсов.

Два уровня доверия

Упакованные приложения выполняются на одном из двух уровней доверия, которые определяют степень изоляции:

Полное доверие (средняя целостность)

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

Это значение по умолчанию для приложений, преобразованных из установщиков Win32 с помощью средства упаковки MSIX и для большинства классических приложений WinUI 3.

AppContainer (частичное доверие)

Приложения AppContainer выполняются в строго изолированной среде. Процесс и его дочерние элементы могут получать доступ только к ресурсам, которые явно предоставляются. Windows обеспечивает изоляцию с помощью файловой системы и виртуализации реестра и границ безопасности AppContainer.

Приложения UWP всегда выполняются в AppContainer. Настольные приложения также могут включиться в AppContainer, указав это в манифесте приложения.

Подсказка

Приложения AppContainer получают самые надежные гарантии безопасности, но требуют больше работы для правильной настройки, особенно для приложений, использующих широкий доступ к системе. Инструкции по настройке см. в приложениях MSIX AppContainer .

Преимущества модели контейнеризации MSIX

Преимущество Описание
Полное удаление Так как Windows отслеживает состояние приложения отдельно, удаление пакета MSIX удаляет все файлы приложений, записи реестра и системные изменения без оставшихся артефактов. Созданные пользователем файлы сохраняются.
Надежные обновления Двоичные файлы приложений доступны только для чтения во время выполнения. Обновления заменяют пакет атомарно, и при необходимости приложение можно откатить.
Отсутствие загрязнения реестра Записи реестра из приложения переходят в виртуальный улей для каждого отдельного пользователя, а не в HKEY_LOCAL_MACHINE. Это предотвращает разрастание реестра, которые часто возникают с программами-установщиками Win32.
Изоляция безопасности Приложения AppContainer ограничены явным образом предоставленными ресурсами, что снижает влияние скомпрометированного процесса.
Обеспечение целостности Windows может обнаружить изменение файлов пакетов во время выполнения. Если пакет изменен, Windows блокирует запуск и запускает восстановление. Ознакомьтесь с обзором пакета MSIX.

Область виртуализации

Не все расположения файловой системы и реестра виртуализированы. Windows применяет разное поведение в зависимости от местоположения, к которому осуществляется доступ.

  • Запись в файлы установки пакета блокируется — каталог установки доступен только для чтения.
  • Записи в системные расположения (например, C:\Windows\) блокируются для приложений AppContainer.
  • Записи в расположения профилей пользователей (например AppData) перенаправляются в расположения каждого пакета для приложений AppContainer или передаются для приложений с полным доверием.
  • Операции чтения из упакованных расположений VFS выполняются из самого пакета, что делает поведение приложения таким, как если бы оно было установлено в традиционные местоположения (например, C:\Program Files\).

Для получения полных технических сведений о том, как работает виртуализация файловой системы и реестра, см. Как выполняются упакованные настольные приложения в Windows.

Общие контейнеры

По умолчанию каждый пакет MSIX выполняется в собственном изолированном контейнере. Для корпоративных сценариев, в которых несколько пакетов должны совместно использовать среду выполнения, например, основное приложение и пакет настройки, Windows поддерживает контейнеры общих пакетов . Общий контейнер предоставляет определенному набору пакетов объединённое представление их виртуальной файловой системы и реестра.

Это функция только для предприятия, требующая прав администратора. См. раздел "Общий контейнер пакетов".

Гибкая виртуализация

Начиная с Windows 11 приложения могут выборочно выбирать определенные папки файловой системы или разделы реестра из виртуализации, делая эти расположения видимыми для других приложений и сохраняя их во время удаления. Это полезно для приложений, которым требуется общий доступ к конфигурации или данным с другими приложениями, при этом сохраняя преимущества пакетов MSIX.

См. статью "Гибкая виртуализация".