アプリケーション マニフェスト
アプリケーション マニフェスト (side-by-side アプリケーション マニフェストまたは fusion マニフェストとも呼ばれます) は、実行時にアプリケーションがバインドする必要がある共有アセンブリとプライベート サイド バイ サイド アセンブリを記述して識別する XML ファイルです。 これらは、アプリケーションのテストに使用されたのと同じアセンブリ バージョンである必要があります。 アプリケーション マニフェストでは、アプリケーションに対してプライベートなファイルのメタデータを記述することもできます。
XML スキーマの完全な一覧については、「マニフェスト ファイルスキーマ 参照してください。
アプリケーション マニフェストには、次の要素と属性があります。
要素 | 属性 | 必須 |
---|---|---|
アセンブリをする | はい | |
manifestVersion を する | はい | |
noInheritをする | いいえ | |
assemblyIdentityをする | はい | |
型 | はい | |
名の | はい | |
言語 | いいえ | |
processorArchitecture | いいえ | |
バージョンの | はい | |
publicKeyToken を する | いいえ | |
互換性 | いいえ | |
アプリケーションの | いいえ | |
サポートされているOSをする | いいえ | |
ID | はい | |
maxversiontestedをする | いいえ | |
ID | はい | |
依存関係 | いいえ | |
dependentAssemblyをする | いいえ | |
ファイルの | いいえ | |
名の | はい | |
hashalg を する | いいえ | |
ハッシュ の | いいえ | |
activatableClassの | いいえ | |
名の | はい | |
threadingModel | はい | |
activeCodePageをする | いいえ | |
autoElevateをする | いいえ | |
disableThemingを無効にする | いいえ | |
disableWindowFilteringをする | いいえ | |
dpiAwareの | いいえ | |
dpiAwareness | いいえ | |
gdiScalingの | いいえ | |
highResolutionScrollingAwareの | いいえ | |
longPathAwareをする | いいえ | |
printerDriverIsolationをする | いいえ | |
ultraHighResolutionScrollingAware | いいえ | |
msixをする | いいえ | |
heapTypeをする | いいえ | |
サポート Architectures | いいえ | |
trustInfoをする | いいえ |
ファイルの場所
可能であれば、アプリケーションマニフェストをリソースとしてアプリケーションの .exe
ファイルまたは .dll
に埋め込む必要があります。 それができない場合は、アプリケーション マニフェスト ファイルを .exe
または .dll
と同じディレクトリに配置できます。
詳細については、「サイド バイ サイド アセンブリのインストール」を参照してください。
ファイル名
慣例により、アプリケーション マニフェストにはアプリの実行可能ファイルと同じ名前を付け、.manifest
拡張子を追加する必要があります。
たとえば、example.exe
または example.dll
を参照するアプリケーション マニフェストでは、次のファイル名構文を使用する必要があります (リソース ID 1 の場合は、構文の <リソース ID> セグメントを省略できます)。
example.exe..manifest>リソース ID を<する
example.dll..manifest>リソース ID を<する
元素
要素と属性の名前では、大文字と小文字が区別されます。 型属性の値を除き、要素と属性の値では大文字と小文字が区別されません。
集会
コンテナー要素。 最初のサブ要素は、noInherit または assemblyIdentity 要素 する必要があります。 必須。
アセンブリ 要素は、名前空間 urn:schemas-microsoft-com:asm.v1
内にある必要があります。 アセンブリの子要素も、継承またはタグ付けによって、この名前空間に存在する必要があります。
アセンブリ 要素には、次の属性があります。
属性 | 形容 |
---|---|
manifestVersion を する |
manifestVersion 属性を 1.0 に設定する必要があります。 |
noInherit
この要素をアプリケーション マニフェストに含め、マニフェストから生成 アクティブ化コンテキストを "継承なし" フラグで設定します。 このフラグがアクティブ化コンテキストで設定されておらず、アクティブ化コンテキストがアクティブな場合、同じプロセス、ウィンドウ、ウィンドウ プロシージャ、および 非同期プロシージャ 呼び出し内の新しいスレッドによって継承されます。 このフラグを設定すると、新しいオブジェクトがアクティブなコンテキストを継承できなくなります。
noInherit 要素は省略可能であり、通常は省略されます。 アセンブリは、独自のアクティブ化コンテキストの伝達を管理するように明示的に設計する必要があるため、ほとんどのアセンブリは、継承なしのアクティブ化コンテキストを使用して正しく動作しません。 noInherit 要素を使用するには、アプリケーション マニフェストによって参照されるすべての依存アセンブリが、アセンブリ マニフェストに noInherit 要素を持っている必要があります。
マニフェスト noInherit を使用する場合は、アセンブリ 要素の最初のサブ要素である必要があります。 assemblyIdentity 要素は、noInherit 要素の直後に来る必要があります。 noInherit 使用しない場合、assemblyIdentity は、アセンブリ 要素の最初のサブ要素である必要があります。 noInherit 要素には子要素がありません。 これは、アセンブリ マニフェスト 有効な要素ではありません。
assemblyIdentity
アセンブリ 要素の最初のサブ要素として、assemblyIdentity は、このアプリケーション マニフェストを所有するアプリケーションを記述し、一意に識別します。 dependentAssembly 要素の最初のサブ要素として、assemblyIdentity は、アプリケーションで必要なサイド バイ サイド アセンブリを記述します。 アプリケーション マニフェストで参照されるすべてのアセンブリには、参照されるアセンブリのアセンブリ マニフェスト内の assemblyIdentity と完全に一致する assemblyIdentity が必要です。
assemblyIdentity 要素には、次の属性があります。 サブ要素はありません。
<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 つの アプリケーションが含まれています。 属性はありません。 随意。 互換性要素のないアプリケーション マニフェストは、Windows 7 での Windows Vista の互換性に既定で設定されます。
互換性 要素は、名前空間 urn:schemas-microsoft-com:compatibility.v1
内にある必要があります。
互換性 の子要素も、継承またはタグ付けによって、この名前空間に含まれている必要があります。
アプリケーション
サポートされているOS 要素 少なくとも 1 つ含まれています。 Windows 10 バージョン 1903 以降では、maxversiontested 要素 省略可能な要素を 1 つ含めることもできます。 属性はありません。 随意。
supportedOS
サポートされている OS 要素には、次の属性があります。 サブ要素はありません。
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>
属国
dependentAssembly 少なくとも 1 つ含まれています。 属性はありません。 随意。
dependentAssembly
dependentAssembly の最初のサブ要素は、アプリケーションで必要なサイド バイ サイド アセンブリを記述する assemblyIdentity 要素である必要があります。 すべての dependentAssembly は、1 つの 依存関係内に存在する必要があります。 属性はありません。
ファイル
アプリケーションに対してプライベートなファイルを指定します。 随意。
ファイル 要素には、次の表に示す属性があります。
属性 | 形容 |
---|---|
名の | ファイルの名前。 たとえば、Comctl32.dllします。 必須。 |
hashalg を する | ファイルのハッシュを作成するために使用されるアルゴリズム。 この値は SHA1 にする必要があります。 随意。 |
ハッシュ の | 名前で参照されるファイルのハッシュ。 ハッシュ アルゴリズムに応じた長さの 16 進数文字列。 随意。 |
activatableClass
パッケージ化されていないデスクトップ アプリがユーザー定義 Windows ランタイム (WinRT) コンポーネントを使用できるようにします。 この要素は、Windows 10 バージョン 1903 以降のバージョンでサポートされています。 詳細については、この記事 参照してください。
activatableClass 要素は、名前空間 urn:schemas-microsoft-com:winrt.v1
に存在する必要があります。
activatableClass 要素には、次の属性があります。
属性 | 形容 |
---|---|
名の | アクティブ化可能なクラスのクラス識別子を指定します。 必須。 |
threadingModel | インプロセス サーバーのアクティブ化に使用するアパートメント スレッド モデルを表します。 有効な値には、both 、STA 、または MTA が含まれます。 詳細については、この記事 を参照してください。 必須。 |
<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 、レガシ またはロケール名 (en-US や ja-JPなど) 値に設定することもできます。
- UTF-8 システムのアクティブなコード ページに構成されたマシンでは、レガシ プロセスをシステム ロケール コード ページに戻します。 システム ロケールにコード ページが定義されていない場合は、Windows-1252/437 が使用されます。 レガシ コードページ設定は、Fusion マニフェストでのみサポートされ、Windows 11 以降でのみサポートされます。
- en-US などのロケール名を指定すると、そのロケール コード ページに対してプロセス コード ページが適切に設定されます。 たとえば、Windows-1252 と 437 (en-USの場合) や 932 (ja-JP) などです。
この要素は、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
現在のプロセスが 1 インチあたりのドット数 (dpi) に対応するかどうかを指定します。
Windows 10 バージョン 1607:dpiAware 要素が存在する場合、dpiAware 要素は無視されます。 Windows 10 バージョン 1607 で以前のバージョンのオペレーティング システムとは異なる動作を指定する場合は、両方の要素をマニフェストに含めることができます。
次の表は、dpiAware 要素の存在と、それに含まれるテキストに基づいて発生する動作について説明します。 要素内のテキストでは、大文字と小文字は区別されません。
dpiAware 要素の状態 | 形容 |
---|---|
欠席する | 現在のプロセスは、既定では認識されていない 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
現在のプロセスが 1 インチあたりのドット数 (dpi) に対応するかどうかを指定します。
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 以降でのみ認識されます。 |
最初に認識された項目が "認識されていません" | 現在のプロセスでは、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 エクスペリエンスの向上」を参照してください。
SetThreadDpiAwarenessContext を呼び出すか、DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED
値を持つ 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
内にある必要があります。 次の表に示す属性があります。
属性 | 形容 |
---|---|
パブリッシャー | 発行元情報について説明します。 この値は、パッケージ アプリのパッケージ マニフェスト内の 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 Framework 実行可能ファイルの場合、アプリケーションが互換性のあるネイティブ プロセッサ アーキテクチャの一覧を指定します。 次の 1 つ以上の値をスペースで区切って含めることができます。
- amd64 を する
- arm64 を する
この要素には属性がありません。
この要素は、Windows 11 バージョン 24H2 以降でサポートされています。
<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 の レベル 属性で指定されます。 レベルの に使用できる値は次のとおりです。
価値 | 形容 |
---|---|
asInvoker を する | アプリケーションは、アプリケーションを開始したプロセスと同じアクセス許可レベルで実行されます。 [管理者として実行] を選択すると、アプリケーションをより高いアクセス許可レベル昇格できます。 |
requireAdministrator を する | アプリケーションは管理者のアクセス許可を使用して実行されます。 アプリケーションを起動するユーザーは、Administrators グループのメンバーである必要があります。 開くプロセスが管理アクセス許可で実行されていない場合、システムは資格情報の入力を求めます。 |
highestAvailable を する | アプリケーションは、可能な最高のアクセス許可レベルで実行されます。 アプリケーションを起動するユーザーが Administrators グループのメンバーである場合、このオプションは level="requireAdministrator" と同じです。 使用可能な最高レベルのアクセス許可レベルが開始プロセスのレベルより高い場合、システムは資格情報の入力を求めます。 |
レベルを highestAvailable
に設定すると、Administrators グループのメンバーであるユーザーとそうでないユーザーの両方でアプリケーションが正常に実行されるようになります。 アプリケーションがシステムへの管理アクセスでのみ機能できる場合は、要求された実行レベルの requireAdministrator
でアプリをマークすることで、システムがこのプログラムを管理アプリとして識別し、必要な昇格手順を実行します。
既定では、Visual C++ リンカーは、asInvoker
の実行レベルを持つアプリケーションのマニフェストに UAC フラグメントを埋め込みます。
requestedExecutionLevel 要素には、uiAccess 省略可能な属性もあります。 アプリケーションでユーザー インターフェイス保護レベルをバイパスし、デスクトップ上の高いアクセス許可ウィンドウへの入力を駆動する場合は、この値を true
に設定します。 この属性は、ユーザー インターフェイス アクセシビリティ アプリケーションの場合にのみ true
に設定します。 既定値は false
です。 セキュリティ ポリシー設定からの追加の制限が適用される場合があります。「ユーザー アカウント制御 :セキュリティで保護された場所にインストールされている UIAccess アプリケーションのみを昇格。 詳細については、「支援技術 のセキュリティに関する考慮事項」を参照してください。
要求 ExecutionLevel ノードを指定すると、ファイルとレジストリの仮想化が無効になります。 下位互換性のためにファイルとレジストリの仮想化を使用する場合は、要求された ExecutionLevel ノードを省略します。
<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>