アセンブリ マニフェストを含んでい なければ なり ません

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

ウィンドウのスタイルにビジュアルスタイルを適用させることができます。

※第3回のモードレスダイアログボックスの作成で作成したソース、ヘッダ、リソースファイルをもとに作成します。


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

アプリケーションマニフェストは、アプリケーションが実行時にバインドする、共有とプライベート side-by-side アセンブリを記述し、特定する XML ファイルです。これらは、アプリケーションをテストするために使用された同じアセンブリのバージョンである必要があります。アプリケーションマニフェストは、アプリケーションに対してプライベートなファイルのメタデータを記述することができます。

XML スキーマの一覧については、Manifest File Schema を参照してください。

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

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



ファイル名の構文

アプリケーションマニフェストファイルの名前は、アプリケーションの実行可能ファイル名の後に .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 要素には、次の属性があります。

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


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 要素には、次の属性があります。サブ要素はありません。

属性説明
type アプリケーションまたはアセンブリの種類を指定します。値は win32 で、すべて小文字である必要があります。必須。
name アプリケーションまたはアセンブリに一意の名前を付けます。 名前には、組織.部門.名前 という形式を使用します。 たとえば、Microsoft.Windows.mysampleApp。 必須。
language アプリケーションまたはアセンブリの言語を識別します。 省略可能です。 アプリケーションまたはアセンブリが言語固有の場合は、DHTML 言語コードを指定します。 世界中で使用(ニュートラル言語)を対象としたアプリケーションの場合 assemblyIdentity において language 属性を省略します。世界中で使用(ニュートラル言語)を対象としたアセンブリの場合、assembly の assemblyIdentity において language に 「*」の値を設定します。
processorArchitecture プロセッサを指定します。 有効な値は、32 ビット Windows の場合 x86、64 ビット Windows の場合 amd64 です。省略可能です。
Version アプリケーションまたはアセンブリのバージョンを指定します。 4 部構成のバージョン形式を使用します: major.minor.build.revision。ピリオドで区切られた各部分は 0 ~ 65535 を含むことができます。詳細については、Assembly Versionsを参照してください。必須。
publicKeyToken アプリケーションまたはアセンブリが署名されている公開キーの SHA-1 ハッシュの最後の 8 バイトを表す 16 文字の 16 進文字列。カタログの署名に使用する公開キーは、2048 ビット以上でなければなりません。すべての共有 side-by-side アセンブリに必要です。


compatibility

少なくとも 1 つの application が含まれています。属性はありません。省略可能です。アプリケーションマニフェストに compatibility 要素が存在しなければ、Windows 7 以降において Windows Vista (既定)の互換性動作が提供されます。


application

少なくとも 1 つの supportedOS が含まれています。Windows 10 バージョン 1903 以降では、省略可能の maxversiontest 要素を 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] タブの列ラベルを右クリックして、「列の選択(S)...」を選択、「オペレーティング システム のコンテキスト」を確認します。
Windows 8.x では、タスクマネージャー(taskmgr)で利用できるこの列をを見つけることができます。列の内容は、検出された最も高い値または既定値として「Windows Vista」を示します。


maxversiontested

maxversiontested 要素は、アプリケーションがテストされた Windows の最大バージョンを指定します。これは、XAML Islands を使用し、MSIX パッケージに配置されていないデスクトップアプリケーションで使用されることを目的としています。この要素は、Windows 10、バージョン 1903、および以降のバージョンでサポートされています。

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

属性説明
Id Id 属性を、アプリケーションのテスト対象となる Windows の最大バージョンを指定する 4 部構成のバージョン文字列に設定します。たとえば、「10.0.18226.0」です。


dependency

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


dependentAssembly

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


file

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

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

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


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-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/2011/WindowsSettings">
<disableWindowFiltering>UTF-8</disableWindowFiltering>
</asmv3:windowsSettings>
</asmv3:application>
...
</assembly>


autoElevate

自動昇格が有効になっているかどうかを指定します。TRUE は、それが有効であることを示します。属性ではありません。


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)に対応しているかどうかを指定します。

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

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

dpiAware 要素の状態説明
なし 現在のプロセスはデフォルトで認識されません。 SetProcessDpiAwareness 関数または SetProcessDPIAware 関数を呼び出すことによって、この設定をプログラムで変更できます。
"true"を含む 現在のプロセスはシステム dpi に対応しています。
"false"を含む Windows Vista、Windows 7、および Windows 8: dpiAware がない場合と同じ動作です。
Windows 8.1 および Windows 10: 現在のプロセスは認識されないため、SetProcessDpiAwareness 関数または SetProcessDPIAware 関数を呼び出すことによって、この設定をプログラムで変更することはできません。
"true/pm"を含む Windows Vista、Windows 7 および Windows 8: 現在のプロセスはシステム dpi に対応しています。
Windows 8.1 および Windows 10: 現在のプロセスは、per-monitor dpi 対応です。
他の文字列を含む Windows Vista、Windows 7、および Windows 8: dpiAware がない場合と同じ動作です。
Windows 8.1 および Windows 10: 現在のプロセスは認識されないため、SetProcessDpiAwareness 関数または SetProcessDPIAware 関数を呼び出すことによって、この設定をプログラムで変更することはできません。

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">
...
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
...
</assembly>


dpiAwareness

現在のプロセスがドット/インチ(dpi)に対応しているかどうかを指定します。

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

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

次の表は、dpiAwareness 要素の存在とその最も左に認識された項目に含まれるテキストに基づいて行われる動作を説明しています。 要素内のテキストは大文字小文字を区別しません。

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

この要素でサポートされる dpi 認識設定の詳細については、DPI_AWARENESSDPI_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(グラフィックスデバイスインターフェイス)framework は、アプリケーション自体を更新することなく、プリミティブとテキストに、プリミティブとテキストを適用できます。これは、GDI アプリケーションがアクティブに更新されなくなった場合に役立ちます。

ベクトル以外のグラフィックス(ビットマップ、アイコン、ツールバーなど)は、この要素では拡大縮小できません。また、アプリケーションによって動的に構築されたビットマップ内に表示されるグラフィックスやテキストも、この要素によってスケーリングできません。

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="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
<ws2:longPathAware>true</ws2:longPathAware>
</asmv3:windowsSettings>
</asmv3:application>
...
</assembly>

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">
...
<asmv3:application>
<asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2011/WindowsSettings">
<printerDriverIsolation>true</printerDriverIsolation>
</asmv3:windowsSettings>
</asmv3:application>
...
</assembly>


ultraHighResolutionScrollingAware

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


msix

現在のアプリケーションのスパース MSIX パッケージ の ID 情報を指定します。この要素は、Windows 10 バージョン 2004 以降でサポートされています。

m‎six 要素は名前空間 になければなりません。

urn:schemas-microsoft-com:msix.v1.

次の表に示す属性があります。‎

‎属性‎説明
publisher ‎発行元の情報を記述します。この値は、スパース パッケージ マニフェストの‎‎ Identity‎‎ 要素の Publisher‎‎ 属性と一致する必要があります。‎
hashalg ファイルのハッシュの作成に使用されるアルゴリズム。この値は、SHA1 にする必要があります。
packageName ‎パッケージの内容を記述します。この値は、スパース パッケージ マニフェストの‎‎ Identity‎‎ 要素の‎‎ Name‎‎ 属性と一致する必要があります。‎ /td>
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="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>


‎以下は、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>
<security>
<requestedPrivileges>
<requestedExecutionLevel
level="asInvoker | highestAvailable | requireAdministrator"
uiAccess="true | false" />
</requestedPrivileges>
</security>
</trustInfo>


要素と属性

trustInfo 要素は、"urn:schemas-microsoft-com:asm.v3"の名前空間でなければなりません。少なくとも 1 つの security が含まれています。属性はありません。省略可能です。


security

この要素は trustInfo 要素のサブ要素であり、少なくとも 1 つの requestedPrivileges が含まれています。属性はありません。


requestedPrivileges

この要素は security 要素のサブ要素であり、少なくとも 1 つの requestedExecutionLevel 要素が含まれています。属性はありません。


requestedExecutionLevel

アプリケーションを実行するために必要なセキュリティ レベルを指定します。 requestedExecutionLevel 要素は、以下の属性があります。サブ要素はありません。

属性説明
Level ユーザーアカウント制御を指定して実行するときにアプリケーションに必要な実行レベルを指定します。次の値を使用できます。
asInvoker: アプリケーションは、アプリケーションを開始したプロセスと同じアクセス許可で実行されます。 [管理者として実行] を選択すると、アプリケーションをより高いアクセス許可に昇格させることができます。
highestAvailable: アプリケーションは、可能な限り高いアクセス許可レベルで実行されます。 アプリケーションを開始するユーザーが管理者グループのメンバーである場合、このオプションは requireAdministrator と同じです。 使用可能な最も高いアクセス許可レベルが、開始したプロセスのレベルより高い場合は、資格情報の入力が求められます。
requireAdministrator: アプリケーションは管理者のアクセス許可で実行されます。 アプリケーションを開始するユーザーは、管理者グループのメンバーである必要があります。 開始したプロセスが管理者のアクセス許可で実行されない場合は、資格情報の入力が求められます。
uiAccess アプリケーションがユーザー インターフェイスの保護レベルをバイパスし、入力をデスクトップ上のアクセス許可の高いウィンドウにアクセスできるようにするには true、それ以外の場合は false。 既定値は false です。 true の設定は、ユーザー インターフェイスのユーザー補助アプリケーションでのみ行います。


ユーザー定義リソース

ユーザー定義のリソース定義ステートメントは、アプリケーション固有のデータを含むリソースを定義します。データは任意の形式を持つことができ、指定されたファイルの内容(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 は生データブロック内のデータのパディングまたはアライメントを実行しません。 ブロック内のデータの適切なアライメントを保証するのはプログラマの責任です。