アプリケーションマニフェストの作成ウィンドウのスタイルにビジュアルスタイルを適用させることができます。 ※第3回のモードレスダイアログボックスの作成で作成したソース、ヘッダ、リソースファイルをもとに作成します。 アプリケーションマニフェストアプリケーションマニフェストは、アプリケーションが実行時にバインドする、共有とプライベート side-by-side アセンブリを記述し、特定する XML ファイルです。これらは、アプリケーションをテストするために使用された同じアセンブリのバージョンである必要があります。アプリケーションマニフェストは、アプリケーションに対してプライベートなファイルのメタデータを記述することができます。 XML スキーマの一覧については、Manifest File Schema を参照してください。 アプリケーションマニフェストには次の要素と属性があります。
ファイル名の構文 アプリケーションマニフェストファイルの名前は、アプリケーションの実行可能ファイル名の後に .manifest が続く名前です。 たとえば、Example.exe または Example.dll を参照するアプリケーションマニフェストでは、次のファイル名の構文が使用されます。 リソース ID が 1 の場合、<リソース ID> フィールドを省略できます。 example.exe.<リソース ID>.manifest example.dll.<リソース ID>.manifest 要素 要素と属性の名前は大文字と小文字を区別されます。要素と属性の値は、type 属性の値を除き、大文字小文字を区別されません。 assembly コンテナー要素。その最初のサブ要素は noInherit または assemblyIdentity 要素である必要があります。必須。 assembly 要素は、"urn:schemas-microsoft-com:asm.v1"に含まれる必要があります。アセンブリの子要素も、継承またはタグ付けによって、この名前空間に含まれる必要があります。 assembly 要素には、次の属性があります。
noInherit この要素をアプリケーションマニフェストに含め、マニフェストから生成された Activation Contexts(アクティベーションコンテキスト)を 「継承なし」フラグで設定します。このフラグがアクティブ化コンテキストで設定されておらず、アクティブ化コンテキストがアクティブである場合、同じプロセス、ウィンドウ、ウィンドウプロシージャー、および Thread Procedure Calls (非同期プロシージャーコール)内の新規スレッドによって継承されます。このフラグを設定すると、新しいオブジェクトはアクティブなコンテキストを継承できなくなります。 noInherit 要素は省略可能で、通常は省略されます。継承なしのアクティブ化コンテキストを使用して、アセンブリは、独自のアクティブ化コンテキストの伝達を管理するように明示的に設計する必要があるため、ほとんどのアセンブリは正しく動作しません。noInherit 要素を使用するには、アプリケーション マニフェストによって参照される依存アセンブリの Assembly Manifests(アセンブリマニフェスト)に noInherit 要素が含まれている必要があります。 マニフェストで noInherit を使用する場合は、assembly 要素の最初のサブ要素である必要があります。assemblyIdentity 要素は、noInherit 要素の直後に指定する必要があります。noInherit を使用しない場合、assemblyIdentity はアセンブリ要素の最初のサブ要素である必要があります。noInherit 要素には子要素がありません。 Assembly Manifests(アセンブリマニフェスト)の有効な要素ではありません。 assemblyIdentity assemblyIdentity は、assembly 要素の最初のサブ要素として、このアプリケーションマニフェストを所有するアプリケーションを記述し、一意に識別します。dependentAssembly 要素の最初のサブ要素として、assemblyIdentity はアプリケーションが必要とする Side-by-Side アセンブリを記述します。アプリケーションマニフェストで参照されるすべてのアセンブリには、参照先アセンブリの独自のアセンブリ マニフェスト内の assemblyIdentity と完全に一致する assemblyIdentity が必要です。 assemblyIdentity 要素には、次の属性があります。サブ要素はありません。
compatibility 少なくとも 1 つの application が含まれています。属性はありません。省略可能です。アプリケーションマニフェストに compatibility 要素が存在しなければ、Windows 7 以降において Windows Vista (既定)の互換性動作が提供されます。 application 少なくとも 1 つの supportedOS が含まれています。Windows 10 バージョン 1903 以降では、省略可能の maxversiontest 要素を 1 つ含めることもできます。属性はありません。省略可能です。 supportedOS SupportedOS 要素は、次の属性を持ちます。サブ要素はありません。
maxversiontested maxversiontested 要素は、アプリケーションがテストされた Windows の最大バージョンを指定します。これは、XAML Islands を使用し、MSIX パッケージに配置されていないデスクトップアプリケーションで使用されることを目的としています。この要素は、Windows 10、バージョン 1903、および以降のバージョンでサポートされています。 maxversiontested 要素には、次の属性があります。サブ要素はありません。
dependency 少なくとも 1 つの dependentAssembly が含まれています。属性はありません。省略可能です。 dependentAssembly dependentAssembly の最初のサブ要素は、アプリケーションで必要な side-by-side アセンブリを記述する assemblyIdentity 要素でなければなりません。すべての dependentAssembly は、1 つの dependency の中にある必要があります。属性はありません。 file アプリケーションにプライベートなファイルを指定します。省略可能です。 file 要素には、次の表に示す属性があります。
activeCodePage Windows 10 では、この要素はプロセスにプロセスのコード ページとして UTF-8 を使用するように強制します。詳しくは、Use the UTF-8 code page を参照してください。Windows 10 では、activeCodePage の有効な値は UTF-8 のみです。 Windows 11 以降、この要素では、従来の非 UTF-8 コード ページ、または従来のアプリケーションの互換性のために特定のロケールのコード ページを選択することもできます。最新のアプリケーションでは、Unicode を使用することを強くお勧めします。Windows 11 では、activeCodePage は、Legacy の値、または en-us や ja-jp などのロケール名に設定することもできます。
この要素は、Windows
10 バージョン 1903(2019年5月の更新)で初めて追加されました。このプロパティを宣言し、以前の Windows ビルドでターゲット/実行することはできますが、従来のコードページの検出と変換を通常どおりに処理する必要があります。この要素には属性がありません。 <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"> autoElevate 自動昇格が有効になっているかどうかを指定します。TRUE は、それが有効であることを示します。属性ではありません。 disableTheming UI 要素にテーマを与えることは無効になっているかどうかを指定します。TRUE は無効を示します。属性ではありません。 disableWindowFiltering ウィンドウフィルタリングを無効にするかどうかを指定します。TRUE は、デスクトップから没入型のウィンドウを列挙することができるので、ウィンドウがフィルタリングを無効にします。 <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"> dpiAware 現在のプロセスがドット/インチ(dpi)に対応しているかどうかを指定します。 Windows 10 バージョン 1607: dpiAwareness 要素が存在する場合、dpiAware 要素は無視されます。 オペレーティングシステムの以前のバージョンとは異なる Windows 10 バージョン 1607 の動作を指定する場合は、両方の要素をマニフェストに含めることができます。 次の表は、dpiAware 要素の存在とそれに含まれるテキストに基づいて行われる動作を示しています。 要素内のテキストは大文字小文字を区別しません。
dpi 認識設定の詳細については、Comparison of DPI Awareness Levels を参照してください。 dpiAware には属性がありません。 <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"> dpiAwareness 現在のプロセスがドット/インチ(dpi)に対応しているかどうかを指定します。 dpiAwareness 要素をサポートするオペレーティングシステムの最小バージョンは Windows 10 バージョン 1607 です。 dpiAwareness 要素をサポートするバージョンでは、dpiAwareness が dpiAware 要素をオーバーライドします。 オペレーティングシステムの以前のバージョンとは異なる Windows 10 バージョン 1607 の動作を指定する場合は、両方の要素をマニフェストに含めることができます。 dpiAwareness 要素には、単一の項目またはカンマで区切られた項目のリストを含めることができます。 後者の場合、オペレーティングシステムによって認識されるリストの最初の(一番左の)項目が使用されます。 このように、将来の Windows オペレーティングシステムのバージョンでサポートされているさまざまな動作を指定できます。 次の表は、dpiAwareness 要素の存在とその最も左に認識された項目に含まれるテキストに基づいて行われる動作を説明しています。 要素内のテキストは大文字小文字を区別しません。
この要素でサポートされる 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"> gdiScaling GDI スケーリングを有効にするかどうかを指定します。gdiScaling 要素をサポートするオペレーティングシステムの最小バージョンは、Windows 10 バージョン 1703 です。 GDI(グラフィックスデバイスインターフェイス)framework は、アプリケーション自体を更新することなく、プリミティブとテキストに、プリミティブとテキストを適用できます。これは、GDI アプリケーションがアクティブに更新されなくなった場合に役立ちます。 ベクトル以外のグラフィックス(ビットマップ、アイコン、ツールバーなど)は、この要素では拡大縮小できません。また、アプリケーションによって動的に構築されたビットマップ内に表示されるグラフィックスやテキストも、この要素によってスケーリングできません。 TRUE は、この要素が有効であることを示します。属性はありません。 <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"> 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"> printerDriverIsolation プリンタードライバーの分離を有効にするかどうかを指定します。TRUE は、それが有効であることを示します。属性はありません。プリンター ドライバーの分離は、プリンター ドライバー、印刷スプーラーが実行されるプロセスから独立したプロセスで実行を有効にすると Windows の印刷サービスの信頼性を向上します。プリンター ドライバーの分離のためのサポートは、Windows 7 および Windows サーバー 2008 R2 で開始。アプリは、プリンター ドライバーから自分自身を分離し、その信頼性を向上させるためのアプリ マニフェストでプリンタードライバーの分離を宣言できます。つまり、プリンタードライバーにエラーがある場合、アプリがクラッシュすることはありません。 <assembly xmlns="urn:schemas-microsoft-com:asm.v1"manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"> ultraHighResolutionScrollingAware 超高解像度スクロール対応を有効にするかどうかを指定します。TRUE は、それが有効であることを示します。属性はありません。 msix 現在のアプリケーションのスパース MSIX パッケージ の ID 情報を指定します。この要素は、Windows 10 バージョン 2004 以降でサポートされています。 msix 要素は名前空間 になければなりません。 urn:schemas-microsoft-com:msix.v1.次の表に示す属性があります。
<?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"/> heapType 使用する Win32 ヒープ API の既定のヒープ実装をオーバーライドします。
この要素には属性がありません。 <assembly xmlns="urn:schemas-microsoft-com:asm.v1"manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3"> 例 以下は、MySampleApp.exe という名前のアプリケーションのアプリケーションマニフェストの例です。 アプリケーションは、SampleAssemblyをサイドバイサイドアセンブリで使用します。 <?xml version="1.0" encoding="UTF-8" standalone="yes"?> <assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0"> <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> <application> <!--This Id value indicates the application supports Windows Vista functionality --> <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}"/> <!--This Id value indicates the application supports Windows 7 functionality--> <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}"/> <!--This Id value indicates the application supports Windows 8 functionality--> <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}"/> <!--This Id value indicates the application supports Windows 8.1 functionality--> <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}"/> </application> </compatibility> <assemblyIdentity type="win32" name="myOrganization.myDivision.mySampleApp" version="6.0.0.0" processorArchitecture="x86" publicKeyToken="0000000000000000" /> <dependency> <dependentAssembly> <assemblyIdentity type="win32" name="Proseware.Research.SampleAssembly" version="6.0.0.0" processorArchitecture="X86" publicKeyToken="0000000000000000" language="*" /> </dependentAssembly> </dependency> </assembly> UAC 情報をマニフェストに組み込むHKEY_LOCAL_MACHINE レジストリへの書き込み、Program Files、システムフォルダへアクセスするようなアプリケーションは管理者権限が必要です。右クリックして 「管理者として実行」 しなければ正常動作しないアプリケーションがこれに該当します。 UAC の既定の動作を変更するには、プロジェクトの「プロパティ」を開き、「構成プロパティ」、「リンカー」、「マニフェスト ファイル」を選択クリックして下さい。 「ユーザー アカウント制御(UAC)を有効にする」、「UAC の実行レベル」、および 「UAC による UI 保護のバイパス」 の各プロパティを変更して下さい。 <trustInfo> 要素アプリケーションのセキュリティ要件を識別します。 <trustInfo> 要素と属性 trustInfo 要素は、"urn:schemas-microsoft-com:asm.v3"の名前空間でなければなりません。少なくとも 1 つの security が含まれています。属性はありません。省略可能です。 security この要素は trustInfo 要素のサブ要素であり、少なくとも 1 つの requestedPrivileges が含まれています。属性はありません。 requestedPrivileges この要素は security 要素のサブ要素であり、少なくとも 1 つの requestedExecutionLevel 要素が含まれています。属性はありません。 requestedExecutionLevel アプリケーションを実行するために必要なセキュリティ レベルを指定します。 requestedExecutionLevel 要素は、以下の属性があります。サブ要素はありません。
ユーザー定義リソースユーザー定義のリソース定義ステートメントは、アプリケーション固有のデータを含むリソースを定義します。データは任意の形式を持つことができ、指定されたファイルの内容(filename パラメータが指定されている場合)または一連の数字と文字列 (raw データブロックが指定されている場合) として定義できます。 nameID typeID filename filename は、リソースのバイナリデータを含むファイルの名前を指定します。ファイルの内容がリソースとして含まれています。RC はバイナリデータをどのような方法でも解釈しません。ターゲットコンピュータアーキテクチャに合わせてデータが適切に整列されるようにすることは、プログラマの責務です。 ユーザー定義リソースは、次の構文を使用して、リソーススクリプト内で完全に定義することもできます。 nameID typeID { raw-data } パラメータ nameID リソースを識別する一意の名前または 16 ビット符号なし整数。 typeID リソースの種類を識別する一意の名前または 16 ビット符号なし整数。数値が指定されている場合は、255 より大きい値にする必要があります。1 ~ 255 の番号は、既存および将来の再定義されたリソースタイプ用に予約済みです。 filename リソースデータを含むファイルの名前。パラメータには、有効なファイル名を指定する必要があります。ファイルが現在の作業ディレクトリにない場合は、フルパスである必要があります。 raw-data 生データは、1 つ以上の整数または文字列で構成されます。 整数は、10 進数、8 進数、または 16 進数の形式で指定できます。 16 ビット Windows と互換性を持つために、整数は WORD 値として格納されます。 整数を 「L」 サフィックスで修飾することによって、DWORD 値として整数を格納できます。 文字列は引用符で囲まれています。 RC は、文字列に終端の null 文字を自動的に追加しません。 接頭辞が 「L」 プレフィックスのワイド文字列として指定しない限り、各文字列は指定された ANSI 文字のシーケンスです。 データブロックは DWORD 界で開始され、RC は生データブロック内のデータのパディングまたはアライメントを実行しません。 ブロック内のデータの適切なアライメントを保証するのはプログラマの責任です。 |