MANIFEST ファイル形式とは?
.manifest ファイルは、Windows オペレーティングシステムがアプリケーションのメタデータ、アセンブリ バインディング情報、およびセキュリティ構成を提供するために使用する XML ドキュメントです。これには、実行ファイルやインストーラー パッケージを記述するプレーンテキストの構造化データ(必要な権限、依存アセンブリ、ファイル拡張子、ランタイム パラメーターなど)が含まれています。
Windows は、主に 2 つの役割で .manifest ファイルを使用します。1 つ目は、Windows XP で導入された Side-by-Side (SxS) アセンブリ バインディングです。マニフェストは、アプリケーションが依存する共有ライブラリ(Common Controls DLL など)のバージョンを Windows に伝え、複数のプログラムが共有コンポーネントを巡って衝突する «DLL 地獄» を防ぎます。また、マニフェストは、アプリケーションのコア機能や利用可能な機能を変更することなく、ビジュアル スタイル エンジンをアクティブ化して、コントロールのテーマ化された外観を有効にすることもできます。
2 つ目の主要な役割は、Windows Vista で導入された UAC (ユーザー アカウント制御) 特権レベルの宣言です。マニフェストで requireAdministrator または asInvoker を指定することで、ユーザーがプログラムを起動したときに Windows が要求する昇格レベルを指示します。
.manifest ファイルの名前は、通常、付随する実行ファイルの名前に .manifest を付け加えたものになります。例えば、notepad.exe のマニフェストは notepad.exe.manifest という名前で、同じフォルダーに配置されます。あるいは、マニフェストを埋め込み Win32 リソース(リソース タイプ RT_MANIFEST)として .EXE または .DLL に直接コンパイルすることもでき、これが最新のアプリケーションでは推奨される手法です。
.manifest ファイルは、CDF-MS ファイルにコンパイルされることも一般的で、これにより基盤となるプログラムが実行時にアプリケーション パラメーターに高速にアクセスできるようになります。
セキュリティと安全性
リスク: LOW.manifest はプレーンな XML テキストです。実行されることはないため、開いて読む分には安全です。リスクは編集にあります。プログラムのマニフェスト(特に UAC レベルやアセンブリの依存関係)を変更すると、起動に失敗したり «サイド バイ サイド構成が正しくない» エラーが発生したりする可能性があるため、編集前に必ずオリジナルをバックアップし、内容を理解している場合のみ編集してください。プログラムの隣にある .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 テキスト); urn:schemas-microsoft-com:asm.v1 名前空間のルート要素 <assembly> |
| MIME タイプ | application/xml |
| バイナリ シグネチャ | なし - プレーンな XML テキスト。ほとんどのファイルは <?xml version="1.0"?> または直接 <assembly で始まります |
| 埋め込み方法 | 独立したファイルとして存在する代わりに、ホスト バイナリ内に Win32 リソース(タイプ RT_MANIFEST、.exe ファイルの場合は ID 1、.dll ファイルの場合は ID 2)として埋め込むことが可能 |
| 外部ファイルの命名 | 関連付けられた実行ファイルの名前に .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 (アセンブリ ID および SxS); urn:schemas-microsoft-com:asm.v3 (UAC trustInfo) |
| SxS バージョン バインディング | 依存するアセンブリ名と正確なバージョン 4 つ組(例: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 KB。バイナリ ペイロードを含まない XML メタデータ宣言のみで構成されます |
| リリース日 | Windows XP (2001); UAC privilege manifests since Windows Vista (2007) |
| 仕様書 | learn.microsoft.com |
MANIFEST の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。MANIFEST ファイルについて最初の質問をしてみましょう。