アプリケーション マニフェスト

アプリケーション マニフェスト (サイドバイサイド アプリケーション マニフェストまたは fusion マニフェストとも呼ばれます) は、実行時にアプリケーションをバインドする必要がある共有およびプライベートのサイドバイサイド アセンブリを記述して識別する XML ファイルです。 このファイルは、アプリケーションのテストで使用したアセンブリ バージョンに一致する必要があります。 アプリケーション マニフェストには、アプリケーションに対してプライベートなファイルのメタデータが記述されていることもあります。

XML スキーマの完全な一覧については、マニフェスト ファイル スキーマに関する記事を参照してください。

アプリケーション マニフェストには、次の要素と属性があります。

要素 属性 必須
assembly はい
manifestVersion はい
noInherit いいえ
assemblyIdentity はい
type はい
name はい
language いいえ
processorArchitecture いいえ
version はい
publicKeyToken いいえ
compatibility いいえ
application いいえ
supportedOS いいえ
Id はい
maxversiontested いいえ
Id はい
dependency いいえ
dependentAssembly いいえ
ファイル いいえ
name はい
hashalg いいえ
hash いいえ
activatableClass いいえ
name はい
threadingModel はい
activeCodePage いいえ
autoElevate いいえ
disableTheming いいえ
disableWindowFiltering いいえ
dpiAware いいえ
dpiAwareness いいえ
gdiScaling いいえ
highResolutionScrollingAware いいえ
longPathAware いいえ
printerDriverIsolation いいえ
ultraHighResolutionScrollingAware いいえ
msix いいえ
heapType いいえ
supportedArchitectures いいえ
trustInfo いいえ

ファイルの場所

可能であれば、アプリケーション マニフェストをリソースとしてアプリケーションの .exe ファイルまたは .dll に埋め込む必要があります。 これを行えない場合は、アプリケーション マニフェスト ファイルを .exe または .dll と同じディレクトリ内に置くことができます。

詳細については、サイドバイサイド アセンブリのインストールに関する記事を参照してください。

ファイル名

慣例により、アプリケーション マニフェストにはアプリの実行可能ファイルと同じ名前を付け、.manifest 拡張子を追加する必要があります。

たとえば、example.exe または example.dll を参照するアプリケーション マニフェストでは、次のファイル名構文を使用する必要があります ("リソース ID" が 1 の場合は、構文の <リソース ID> セグメントを省略できます)。

example.exe.<リソース ID>.manifest

example.dll.<リソース ID>.manifest

要素

要素と属性の名前では、大文字と小文字が区別されます。 型属性の値を除き、要素と属性の値では大文字と小文字が区別されません。

assembly

コンテナー要素。 最初のサブ要素は、noInherit または assemblyIdentity 要素である必要があります。 必須。

assembly 要素は、名前空間 urn:schemas-microsoft-com:asm.v1 内に存在する必要があります。 assembly の子要素も、継承またはタグ付けによって、この名前空間内に存在する必要があります。

assembly 要素には、次の属性があります。

属性 説明
manifestVersion manifestVersion 属性は 1.0 に設定する必要があります。

noInherit

この要素をアプリケーション マニフェストに含め、"非継承" フラグを使用して、マニフェストから生成されたアクティブ化コンテキストを設定します。 このフラグがアクティブ化コンテキストで設定されておらず、アクティブ化コンテキストがアクティブな場合、同じプロセス、ウィンドウ、ウィンドウ プロシージャ、非同期プロシージャ呼び出しの新しいスレッドによって継承されます。 このフラグを設定すると、新しいオブジェクトがアクティブなコンテキストを継承できなくなります。

noInherit 要素は省略可能であり、通常は省略されます。 アセンブリは、独自のアクティブ化コンテキストの伝達を管理するように明示的に設計する必要があるため、ほとんどのアセンブリは、非継承のアクティブ化コンテキストを使用して正しく動作しません。 noInherit 要素を使用するには、アプリケーション マニフェストによって参照される依存アセンブリのアセンブリ マニフェストnoInherit 要素が含まれている必要があります。

マニフェストで noInherit を使用する場合、これは assembly 要素の最初のサブ要素である必要があります。 assemblyIdentity 要素は、noInherit 要素の直後に必要です。 noInherit を使用しない場合、assemblyIdentityassembly 要素の最初のサブ要素である必要があります。 noInherit 要素には子要素がありません。 これはアセンブリ マニフェストの有効な要素ではありません。

assemblyIdentity

assembly 要素の最初のサブ要素である assemblyIdentity では、このアプリケーション マニフェストを所有するアプリケーションを記述し、一意に識別します。 dependentAssembly 要素の最初のサブ要素である assemblyIdentity では、アプリケーションで必要なサイドバイサイド アセンブリを記述します。 アプリケーション マニフェストで参照されるすべてのアセンブリには、参照されるアセンブリの独自のアセンブリ マニフェスト内にある assemblyIdentity と完全に一致する assemblyIdentity が必要です。

assemblyIdentity 要素には、次の属性があります。 サブ要素はありません。

属性 説明
type アプリケーションまたはアセンブリの種類を指定します。 値は、win32 にし、すべて小文字にする必要があります。 必須。
name アプリケーションまたはアセンブリに一意の名前を付けます。 名前には、Organization.Division.Name の形式を使用します。 たとえば、「 Microsoft.Windows.mysampleApp 」のように指定します。 必須。
language アプリケーションまたはアセンブリの言語を識別します。 アプリケーションまたはアセンブリが言語固有の場合は、DHTML 言語コードを指定します。 世界中で使用する (言語に依存しない) ことを目的としたアプリケーションの assemblyIdentityでは、language 属性を省略します。
世界中で使用する (言語に依存しない) ことを目的としたアセンブリの assemblyIdentity では、language の値を * に設定します。 省略可能。
processorArchitecture プロセッサを指定します。 有効な値として、x86amd64armarm64 があります。 また、すべてのプラットフォームが対象になるように、* を指定することもできます。 省略可能。
version アプリケーションまたはアセンブリのバージョンを指定します。 4 部構成のバージョン形式 mmmmm.nnnnn.ooooo.ppppp を使用します。 ピリオドで区切られた各部分は、0 から 65535 までの範囲にできます。 詳細については、アセンブリのバージョンに関する記事を参照してください。 必須。
publicKeyToken アプリケーションまたはアセンブリが署名されている公開鍵の SHA-1 ハッシュの最後の 8 バイトを表す、16 文字の 16 進文字列。 カタログの署名に使用される公開鍵は、2048 ビット以上である必要があります。 すべての共有サイドバイサイド アセンブリに必要です。
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
 ...
<dependency>
   <dependentAssembly>
      <assemblyIdentity
          type="win32"
          name="Microsoft.Windows.Common-Controls"
          version="6.0.0.0"
          processorArchitecture="*"
          publicKeyToken="6595b64144ccf1df"
          language="*"
       />
   </dependentAssembly>
</dependency>
...
</assembly>

互換性

少なくとも 1 つの application を含みます。 属性はありません。 省略可能。 compatibility 要素のないアプリケーション マニフェストは既定で、Windows 7 の Windows Vista の互換性に設定されます。

compatibility 要素は、名前空間 urn:schemas-microsoft-com:compatibility.v1 内に存在する必要があります。 compatibility の子要素も、継承またはタグ付けによって、この名前空間内に存在する必要があります。

アプリケーション

少なくとも 1 つの supportedOS 要素を含みます。 Windows 10 バージョン 1903 以降では、省略可能な maxversiontested 要素を 1 つ含めることもできます。 属性はありません。 省略可能。

supportedOS

supportedOS 要素には、次の属性があります。 サブ要素はありません。

属性 内容
Id Vista 機能を使用してアプリケーションを実行するには、Id 属性を {e2011457-1546-43c5-a5fe-008deee3d3f0} に設定します。 これで、Windows Vista 用に設計されたアプリケーションを後のオペレーティング システムで実行できます。
Windows 7 機能を使用してアプリケーションを実行するには、Id 属性を {35138b9a-5d96-4fbd-8e2d-a2440225f93a} に設定します。
Windows Vista、Windows 7、Windows 8 の機能をサポートするアプリケーションでは、個別のマニフェストは必要ありません。 この場合は、すべての Windows オペレーティング システムの GUID を追加します。
Windows での Id 属性の動作については、Windows 8 と Windows Server 2012 の互換性クックブックに関する記事を参照してください。
次の GUID は、指定されたオペレーティング システムに対応します。
{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a} -> Windows 10、Windows 11、Windows Server 2016、Windows Server 2019、Windows Server 2022
{1f676c76-80e1-4239-95bb-83d0f6d0da78} -> Windows 8.1 および Windows Server 2012 R2
{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38} -> Windows 8 および Windows Server 2012
{35138b9a-5d96-4fbd-8e2d-a2440225f93a} -> Windows 7 および Windows Server 2008 R2
{e2011457-1546-43c5-a5fe-008deee3d3f0} -> Windows Vista および Windows Server 2008
これを Windows 7 または Windows 8.x でテストするには、リソース モニター (resmon) を実行し、[CPU] タブに移動し、列ラベル [列の選択...] を右クリックし、[オペレーティング システムのコンテキスト] をオンにします。 Windows 8.x では、この列はタスク マネージャー (taskmgr) にもあります。 列の内容には、見つかった最大値または既定値として "Windows Vista" が表示されます。

maxversiontested

maxversiontested 要素では、アプリケーションによってサポートされる最小 OS バージョンから最大バージョンまで、アプリケーションがテストされた Windows のバージョンを指定します。 バージョンの完全なセットは、ここで見つけることができます. これは、XAML Islands を使用し、MSIX パッケージには展開されていないデスクトップ アプリケーションで使用することを目的としています。 この要素は、Windows 10 バージョン 1903 以降のバージョンでサポートされています。

maxversiontested 要素には、次の属性があります。 サブ要素はありません。

属性 内容
Id Id 属性を、アプリケーションがテストされた Windows の最大バージョンを指定する 4 部構成のバージョン文字列に設定します。 たとえば、Windows 10 バージョン 1903 の場合は "10.0.18362.1" です。 必須。
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
...
    <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
        <application>
            <!-- Windows 10, version 1903 -->
            <maxversiontested Id="10.0.18362.1"/>
            <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
        </application>
    </compatibility>
...
</assembly>

dependency

少なくとも 1 つの dependentAssembly を含んでいます。 属性はありません。 省略可能。

dependentAssembly

dependentAssembly の最初のサブ要素は、アプリケーションで必要なサイドバイサイド アセンブリを記述する assemblyIdentity 要素である必要があります。 すべての dependentAssembly は、1 つだけの dependency 内にある必要があります。 属性はありません。

file

アプリケーションに対してプライベートなファイルを指定します。 省略可能。

file 要素には、次の表に示す属性があります。

属性 内容
name ファイルの名前。 たとえば、Comctl32.dll です。 必須。
hashalg ファイルのハッシュを作成するために使用されるアルゴリズム。 この値は SHA1 である必要があります。 省略可能。
hash 名前で参照されるファイルのハッシュ。 ハッシュ アルゴリズムに応じた長さの 16 進数文字列。 省略可能。

activatableClass

パッケージ化されていないデスクトップ アプリで、ユーザー定義の Windows ランタイム (WinRT) コンポーネントを使用できるようにします。 この要素は、Windows 10 バージョン 1903 以降のバージョンでサポートされています。 詳細については、 こちらの記事を参照してください。

activatableClass 要素は、名前空間 urn:schemas-microsoft-com:winrt.v1 内に存在する必要があります。

activatableClass 要素には、次の属性があります。

属性 内容
name アクティブ化可能なクラスのクラス識別子を指定します。 必須。
threadingModel インプロセス サーバーのアクティブ化に使用するアパートメント スレッド モデルを表します。 有効な値として、bothSTAMTA があります。 詳細については、この記事を参照してください。 必須。
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
...
<file name="WinRTComponent.dll">
    <activatableClass
        name="WinRTComponent.MessageHolder"
        threadingModel="both"
        xmlns="urn:schemas-microsoft-com:winrt.v1"
     />
</file>
...
</assembly>

activeCodePage

Windows 10 では、この要素を使用すると、プロセスではプロセス コード ページとして UTF-8 が強制的に使用されます。 詳細については、UTF-8 コード ページの使用に関する記事を参照してください。 Windows 10 では、activeCodePage の有効な値は UTF-8 のみです。

Windows 11 以降では、この要素を使用すると、UTF-8 以外のレガシ コード ページか、レガシ アプリケーションの互換性のために特定のロケールのコード ページを選択することもできます。 最新のアプリケーションでは、Unicode を使用することを強くお勧めします。 Windows 11 では、activeCodePage に、値 Legacy か、ロケール名 (en-USja-JP など) を設定することもできます。

  • UTF-8 システムのアクティブなコード ページに構成されたマシンでは、Legacy を使用すると、プロセスがシステム ロケールのコード ページに戻ります。 システム ロケールにコード ページが定義されていない場合は、Windows-1252/437 が使用されます。 Legacy コードページ設定は、Fusion マニフェストのみと、Windows 11 以降でのみサポートされます。
  • en-US などのロケール名を指定すると、そのロケールのコード ページに対してプロセス コード ページが適切に設定されます。 たとえば、en-US の場合は Windows-1252 と 437、ja-JP の場合は 932 です。

この要素は、Windows 10 バージョン 1903 (2019 年 5 月の更新プログラム) で最初に追加されました。 これよりも前の Windows ビルドでこのプロパティを宣言し、ターゲットを設定したり実行したりすることはできますが、レガシ コード ページの検出と変換を通常どおり処理する必要があります。 この要素には属性はありません。

次の例では、この要素を使用して、現在のプロセスでプロセス コード ページとして UTF-8 を強制的に使用する方法を示します。

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings"> 
      <activeCodePage>UTF-8</activeCodePage> 
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

autoElevate

自動昇格が有効になっているかどうかを指定します。 TRUE は有効であることを示します。 属性はありません。 実行可能ファイルは、Windows Publisher によってデジタル署名されている必要があります。 内部使用のみ。

disableTheming

UI 要素へのテーマの指定が無効になっているかどうかを指定します。 TRUE は無効であることを示します。 属性はありません。

disableWindowFiltering

ウィンドウのフィルター処理を無効にするかどうかを指定します。 TRUE を指定すると、デスクトップからイマーシブ ウィンドウを列挙できるように、ウィンドウのフィルター処理が無効になります。 disableWindowFiltering は Windows 8 で追加され、属性はありません。

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2011/WindowsSettings">
      <disableWindowFiltering>true</disableWindowFiltering>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

dpiAware

現在のプロセスが dpi (1 インチあたりのドット数) 対応かどうかを指定します。

Windows 10 バージョン 1607:dpiAwareness 要素が存在する場合、dpiAware 要素は無視されます。 Windows 10 バージョン 1607 に、以前のバージョンのオペレーティング システムとは異なる動作を指定する場合は、両方の要素をマニフェストに含めることができます。

次の表は、dpiAware 要素の存在と、それに含まれるテキストに基づいて発生する動作を示しています。 要素内のテキストでは、大文字と小文字は区別されません。

dpiAware 要素の状態 説明
Absent 現在のプロセスは、既定では dpi 非対応です。 SetProcessDpiAwareness または SetProcessDPIAware 関数を呼び出してこの設定をプログラムで変更できます。
"true" を含む 現在のプロセスはシステム dpi 対応です。
"false" を含む Windows Vista、Windows 7、Windows 8: 動作は、dpiAware が存在しない場合と同じです。
Windows 8.1 および Windows 10: 現在のプロセスは dpi 非対応で、SetProcessDpiAwareness または SetProcessDPIAware 関数を呼び出してこの設定をプログラムで変更することはできません。
"true/pm" を含む Windows Vista、Windows 7、Windows 8: 現在のプロセスはシステム dpi 対応です。
Windows 8.1 と Windows 10: 現在のプロセスはモニターごとの dpi 対応です。
"モニターごと" を含む Windows Vista、Windows 7、Windows 8: 動作は、dpiAware が存在しない場合と同じです。
Windows 8.1 と Windows 10: 現在のプロセスはモニターごとの dpi 対応です。
その他の文字列を含む Windows Vista、Windows 7、Windows 8: 動作は、dpiAware が存在しない場合と同じです。
Windows 8.1 および Windows 10: 現在のプロセスは dpi 非対応で、SetProcessDpiAwareness または SetProcessDPIAware 関数を呼び出してこの設定をプログラムで変更することはできません。

dpi 対応設定の詳細については、Windows での高 DPI デスクトップ アプリケーション開発に関する記事を参照してください。

dpiAware には属性がありません。

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
      <dpiAware>true</dpiAware>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

dpiAwareness

現在のプロセスが dpi (1 インチあたりのドット数) 対応かどうかを指定します。

dpiAwareness 要素をサポートするオペレーティング システムの最小バージョンは、Windows 10 バージョン 1607 です。 dpiAwareness 要素をサポートするバージョンの場合、dpiAwareness によって dpiAware 要素がオーバーライドされます。 Windows 10 バージョン 1607 に、以前のバージョンのオペレーティング システムとは異なる動作を指定する場合は、両方の要素をマニフェストに含めることができます。

dpiAwareness 要素には、1 つの項目またはコンマ区切りの項目のリストを含めることができます。 後者の場合、オペレーティング システムによって認識されるリスト内の最初 (左端) の項目が使用されます。 このようにして、将来の Windows オペレーティング システムのバージョンでサポートされるさまざまな動作を指定できます。

次の表は、dpiAwareness 要素の存在と、認識される左端の項目に含まれるテキストに基づいて発生する動作を示しています。 要素内のテキストでは、大文字と小文字は区別されません。

dpiAwareness 要素の状態: 説明
要素が存在しない dpiAware 要素では、プロセスが dpi 対応かどうかを指定します。
認識される項目を含まない 現在のプロセスは、既定では dpi 非対応です。 SetProcessDpiAwareness または SetProcessDPIAware 関数を呼び出してこの設定をプログラムで変更できます。
最初に認識される項目は "system" 現在のプロセスはシステム dpi 対応です。
最初に認識される項目は "permonitor" 現在のプロセスはモニターごとの dpi 対応です。
最初に認識される項目は "permonitorv2" 現在のプロセスでは、モニターごとの v2 dpi 対応コンテキストが使用されます。 この項目は、Windows 10 バージョン 1703 以降でのみ認識されます。
最初に認識される項目は "unaware" 現在のプロセスは dpi 非対応です。 SetProcessDpiAwareness または SetProcessDPIAware 関数を呼び出して、この設定をプログラムで変更することはできません。

この要素でサポートされる dpi 対応設定の詳細については、「DPI_AWARENESS」と「DPI_AWARENESS_CONTEXT」を参照してください。

dpiAwareness には属性がありません。

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
      <dpiAwareness>PerMonitorV2, unaware</dpiAwareness>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

gdiScaling

GDI スケーリングが有効になっているかどうかを指定します。 gdiScaling 要素をサポートするオペレーティング システムの最小バージョンは、Windows 10 バージョン 1703 です。

GDI (グラフィックス デバイス インターフェイス) フレームワークでは、アプリケーション自体を更新することなく、モニターごとにプリミティブとテキストに DPI スケーリングを適用できます。 これは、GDI アプリケーションがアクティブに更新されなくなった場合に役立ちます。

非ベクター グラフィックス (ビットマップ、アイコン、ツール バーなど) は、この要素でスケーリングできません。 さらに、アプリケーションによって動的に構築されたビットマップ内に表示されるグラフィックスとテキストも、この要素ではスケーリングできません。 詳細については、「GDI ベースのデスクトップ アプリでの高 DPI エクスペリエンスの向上」を参照してください。

DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED 値を指定して ‭‬SetThreadDpiAwarenessContext‭‬ 関数または ‭‬SetProcessDpiAwarenessContext‭‬ 関数を呼び出すことで、この設定をプログラムで変更できます。

TRUE は、この要素が有効であることを示します。 属性はありません。

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2017/WindowsSettings">
      <gdiScaling>true</gdiScaling>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

highResolutionScrollingAware

高解像度スクロール対応が有効になっているかどうかを指定します。 TRUE は有効であることを示します。 属性はありません。

longPathAware

長さが MAX_PATH を超える長いパスを有効にします。 この要素は、Windows 10 バージョン 1607 以降でサポートされています。 詳細については、 こちらの記事を参照してください。

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns:ws2="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
      <ws2:longPathAware>true</ws2:longPathAware>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

printerDriverIsolation

プリンター ドライバーの分離が有効になっているかどうかを指定します。 TRUE は有効であることを示します。 属性はありません。 プリンター ドライバーの分離により、印刷スプーラーが実行されるプロセスとは別のプロセスでプリンター ドライバーを実行できるようになり、Windows 印刷サービスの信頼性が向上します。 Windows 7 および Windows Server 2008 R2 でプリンター ドライバーの分離のサポートが開始されました。 アプリでは、プリンター ドライバーの分離をアプリ マニフェストで宣言して、プリンター ドライバーからそのアプリ自体を分離し、信頼性を向上させることができます。 つまり、プリンター ドライバーにエラーがある場合にアプリがクラッシュしません。

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2011/WindowsSettings">
      <printerDriverIsolation>true</printerDriverIsolation>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

ultraHighResolutionScrollingAware

超高解像度スクロール対応が有効になっているかどうかを指定します。 TRUE は有効であることを示します。 属性はありません。

msix

現在のアプリケーションの外部の場所を使用してパッケージの ID 情報を指定します (「外部の場所でパッケージ化してパッケージ ID を付与する」を参照)。 この要素は、Windows 10 バージョン 2004 以降のバージョンでサポートされています。

msix 要素は、名前空間 urn:schemas-microsoft-com:msix.v1 内に存在する必要があります。 これには、次の表に示す属性があります。

属性 説明
publisher 発行元情報について説明します。 この値は、外部の場所でパッケージされたアプリのパッケージ マニフェスト内にある Identity 要素の Publisher 属性と一致する必要があります。
packageName パッケージの内容について説明します。 この値は、外部の場所でパッケージされたアプリのパッケージ マニフェスト内にある Identity 要素の Name 属性と一致する必要があります。
applicationId アプリケーションの一意の識別子。 この値は、外部の場所でパッケージされたアプリのパッケージ マニフェスト内にある Application 要素の Id 属性と一致する必要があります。
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
  <assemblyIdentity version="1.0.0.0" name="Contoso.PhotoStoreApp"/>
  <msix xmlns="urn:schemas-microsoft-com:msix.v1"
          publisher="CN=Contoso"
          packageName="ContosoPhotoStore"
          applicationId="ContosoPhotoStore"
        />
</assembly>

heapType

使用する Win32 ヒープ API の既定のヒープ実装をオーバーライドします。

  • SegmentHeap は、セグメント ヒープが使用されることを示します。 セグメント ヒープは、全体的なメモリ使用量を全般的に削減する最新のヒープ実装です。 この要素は、Windows 10 バージョン 2004 (ビルド 19041) 以降でサポートされています。
  • 他のすべての値は無視されます。

この要素には属性はありません。

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2020/WindowsSettings">
      <heapType>SegmentHeap</heapType>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

supportedArchitectures

IL のみの .NET 実行可能ファイルの場合、アプリケーションと互換性のあるネイティブ プロセッサ アーキテクチャのリストを指定します。 次の値を 1 つ以上、スペースで区切って含めることができます。

  • amd64
  • arm64

この要素には属性はありません。

この要素は、Windows 11 バージョン 21H2 以降でサポートされています。

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2024/WindowsSettings">
      <supportedArchitectures>amd64 arm64</supportedArchitectures>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

trustInfo

すべての UAC 準拠アプリでは、要求実行レベルをアプリケーション マニフェストに追加する必要があります。 要求実行レベルで、アプリに必要な特権を指定します。 詳細については、ユーザー アカウント制御 (UAC) がアプリケーションに与える影響に関する記事を参照してください。

要求実行レベルは、trustInfo 要素の requestedExecutionLevel 子孫の level 属性で指定されます。 level に使用できる値は次のとおりです。

説明
asInvoker アプリケーションは、これを開始したプロセスと同じアクセス許可レベルで実行されます。 [管理者として実行] を選択すると、アプリケーションをより高いアクセス許可に昇格させることができます。
requireAdministrator アプリケーションは管理者のアクセス許可を使用して実行されます。 アプリケーションを開始するユーザーは、管理者グループのメンバーである必要があります。 開始したプロセスが管理者のアクセス許可で実行されない場合は、資格情報の入力が求められます。
highestAvailable アプリケーションは、可能な最高のアクセス許可レベルで実行されます。 アプリケーションを開始するユーザーが管理者グループのメンバーである場合、このオプションは level="requireAdministrator" と同じです。 使用可能な最も高いアクセス許可レベルが、開始したプロセスのレベルより高い場合は、資格情報の入力が求められます。

level を highestAvailable に設定すると、Administrators グループのメンバーであるユーザーとそうでないユーザーの両方でアプリケーションが正常に実行されるようになります。 システムへの管理アクセス権でのみアプリケーションを実行できる場合、要求実行レベル requireAdministrator でアプリケーションにマーキングすると、システムではこのプログラムを管理アプリとして識別し、必要な昇格手順を実行するようになります。

既定では、Visual C++ リンカーは、実行レベル asInvoker のアプリケーションのマニフェストに UAC フラグメントを組み込みます。

requestedExecutionLevel 要素には、省略可能な属性 uiAccess もあります。 アプリケーションでユーザー インターフェイスの保護レベルをバイパスし、デスクトップ上のアクセス許可の高いウィンドウに入力できるようにするには、この値を true に設定します。 ユーザー インターフェイスのユーザー補助アプリケーションでのみ、この属性を true に設定します。 既定値は false です。 セキュリティ ポリシー設定からの追加の制限が適用される場合があります。「ユーザー アカウント制御: 安全な場所にインストールされている UIAccess アプリケーションの昇格のみ」を参照してください。 詳細については、支援技術のセキュリティに関する考慮事項に関する記事を参照してください。

requestedExecutionLevel ノードを指定すると、ファイルとレジストリの仮想化が無効になります。 下位互換性のためにファイルとレジストリの仮想化を利用する場合は、requestedExecutionLevel ノードを省略します。

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
  <security>
    <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
      <requestedExecutionLevel level="asInvoker" uiAccess="false" />
    </requestedPrivileges>
  </security>
</trustInfo>

MySampleApp.exe という名前のアプリケーションのアプリケーション マニフェストの例を次に示します。 アプリケーションでは、SampleAssembly サイドバイサイド アセンブリを使用します。

<?xml version="1.0" encoding="UTF-8"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
   <assemblyIdentity type="win32" name="MyOrganization.MyDivision.MySampleApp" version="6.0.0.0" processorArchitecture="*" />
   <dependency>
      <dependentAssembly>
         <assemblyIdentity type="win32" name="Proseware.Research.SampleAssembly" version="6.0.0.0" processorArchitecture="*" publicKeyToken="0000000000000000" />
      </dependentAssembly>
   </dependency>
   <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
      <application>
         <!-- Windows 10 and Windows 11 -->
         <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
         <!-- Windows 8.1 -->
         <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
         <!-- Windows 8 -->
         <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
         <!-- Windows 7 -->
         <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
         <!-- Windows Vista -->
         <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />
      </application>
   </compatibility>
</assembly>