Что такое формат файла MANIFEST?
Файл .manifest - это XML документ, используемый операционной системой Windows для предоставления метаданных приложения, информации о связывании сборок и конфигурации безопасности. Он содержит структурированные текстовые данные, описывающие исполняемый файл или пакет установщика, включая необходимые привилегии, зависимые сборки, расширения файлов и параметры среды выполнения.
Windows использует файлы .manifest в двух основных ролях. Первая - это связывание сборок Side-by-Side (SxS), представленное в Windows XP: манифест сообщает Windows, от какой версии общих библиотек (таких как DLL общих элементов управления) зависит приложение, предотвращая конфликты «DLL Hell», когда несколько программ конфликтуют из-за общих компонентов. Манифест также может активировать движок визуальных стилей - включая тематический внешний вид элементов управления - без изменения основной функциональности приложения или доступных функций.
Вторая важная роль, появившаяся в Windows Vista, - это объявление уровня привилегий UAC (User Account Control). Манифест, указывающий requireAdministrator или asInvoker, сообщает Windows, какой уровень прав запрашивать при запуске программы пользователем.
Имя файла .manifest обычно совпадает с именем исполняемого файла, к которому он прилагается, с добавлением расширения .manifest - например, манифест для notepad.exe называется notepad.exe.manifest и находится в той же папке. В качестве альтернативы манифест может быть скомпилирован непосредственно в .EXE или .DLL как встроенный ресурс Win32 (тип ресурса RT_MANIFEST), что является предпочтительным подходом для современных приложений.
Файлы .manifest также часто компилируются в файлы CDF-MS, что обеспечивает базовой программе более быстрый доступ к параметрам приложения во время выполнения.
Безопасность и защита
РИСК: LOWФайл .manifest - это обычный текст XML, он не может исполняться, поэтому открывать его для чтения безопасно. Риск представляет редактирование: изменение манифеста программы (особенно уровня UAC или зависимостей сборок) может нарушить запуск или вызвать ошибку «side-by-side configuration is incorrect», поэтому сначала сделайте резервную копию оригинала и редактируйте только если понимаете, что делаете. Не удаляйте файл .exe.manifest, который находится рядом с программой - некоторые приложения не запускаются без внешнего манифеста. Сами манифесты не являются вектором распространения вредоносного ПО, хотя, как и с любым файлом, будьте осторожны с файлами, имеющими вводящее в заблуждение двойное расширение.
Детали формата
в двух словах- Java JAR MANIFEST.MF - Внутри архивов .jar файл META-INF/MANIFEST.MF является текстовым (не XML) манифестом, в котором перечислены основной класс и атрибуты.
- Манифест веб-приложения - PWA используют манифест JSON (обычно manifest.json/manifest.webmanifest), описывающий устанавливаемое веб-приложение.
- Манифест кэша / ресурсов - Различные инструменты (HTML5 AppCache, инструменты сборки, игровые движки) записывают текстовые или JSON-файлы .manifest со списком включенных ресурсов.
Программы, открывающие файлы MANIFEST
Технические подробности
глубокая спецификация| Структура файла | XML (текст UTF-8); корневой элемент <assembly> в пространстве имен urn:schemas-microsoft-com:asm.v1 |
| MIME-тип | application/xml |
| Бинарная сигнатура | Отсутствует - обычный текст XML; большинство файлов начинаются с <?xml version="1.0"?> или сразу с <assembly |
| Метод встраивания | Может быть встроен как ресурс Win32 (тип RT_MANIFEST, ID 1 для .exe файлов, ID 2 для .dll файлов) внутрь хост-бинарника вместо существования в виде отдельного файла |
| Именование внешних файлов | Называется по имени связанного исполняемого файла с добавлением .manifest (например, app.exe.manifest); должен располагаться в той же директории, что и исполняемый файл |
| Основные роли | Связывание версий сборок Side-by-Side (SxS), объявление уровня привилегий UAC, активация визуальных стилей Common Controls v6, активация COM без регистрации |
| Уровни доверия UAC | Поддерживаемые значения requestedExecutionLevel: asInvoker, highestAvailable, requireAdministrator |
| Ключевые пространства имен XML | urn:schemas-microsoft-com:asm.v1 (идентификация сборки и SxS); urn:schemas-microsoft-com:asm.v3 (UAC trustInfo) |
| Связывание версий SxS | Перечисляет имена зависимых сборок и точные четверки версий (например, 6.0.0.0) для перенаправления загрузки DLL во время выполнения без записей в реестре |
| Поддержка платформ | Windows XP и более поздние версии; UAC requestedExecutionLevel и активация визуальных стилей требуют Windows Vista или выше |
| Механизм выполнения | Windows загружает манифесты в контекст активации (actctx) при запуске процесса для прозрачного перенаправления связей сборок |
| Цель компиляции | Может быть скомпилирован в файлы .cdf-ms (Catalog Definition Format - Manifest Store) для более быстрого доступа к параметрам во время выполнения |
| Инструментарий разработчика | Создается и встраивается с помощью Visual Studio, MSBuild и инструмента mt.exe (Windows SDK); редактируется в любом текстовом редакторе |
| Типичный размер файла | 1-10 КБ; содержит только объявления метаданных XML без бинарных данных |
| Выпущен | Windows XP (2001); UAC privilege manifests since Windows Vista (2007) |
| Спецификация | learn.microsoft.com |
Конвертации MANIFEST
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах MANIFEST.