アプリケーションマニフェストの作成
ウィンドウのスタイルにビジュアルスタイルを適用させることができます。
※第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-us や ja-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 を使用するように強制する方法を示しています。
...
<asmv3:application>
<asmv3:windowsSettings xmlns="//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 で追加され、属性はありません。
...
<asmv3:application>
<asmv3:windowsSettings xmlns="//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 要素の存在とそれに含まれるテキストに基づいて行われる動作を示しています。 要素内のテキストは大文字小文字を区別しません。
なし | 現在のプロセスはデフォルトで認識されません。 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 には属性がありません。
...
<asmv3:application>
<asmv3:windowsSettings xmlns="//schemas.microsoft.com/SMI/2005/WindowsSettings">
<dpiAware>true</dpiAware>
</asmv3:windowsSettings>
</asmv3:application>
...
</assembly>
dpiAwareness
現在のプロセスがドット/インチ(dpi)に対応しているかどうかを指定します。
dpiAwareness 要素をサポートするオペレーティングシステムの最小バージョンは Windows 10 バージョン 1607 です。 dpiAwareness 要素をサポートするバージョンでは、dpiAwareness が dpiAware 要素をオーバーライドします。 オペレーティングシステムの以前のバージョンとは異なる Windows 10 バージョン 1607 の動作を指定する場合は、両方の要素をマニフェストに含めることができます。
dpiAwareness 要素には、単一の項目またはカンマで区切られた項目のリストを含めることができます。 後者の場合、オペレーティングシステムによって認識されるリストの最初の(一番左の)項目が使用されます。 このように、将来の Windows オペレーティングシステムのバージョンでサポートされているさまざまな動作を指定できます。
次の表は、dpiAwareness 要素の存在とその最も左に認識された項目に含まれるテキストに基づいて行われる動作を説明しています。 要素内のテキストは大文字小文字を区別しません。
要素なし | dpiAware 要素は、プロセスがdpiを認識しているかどうかを指定します。 |
認識された項目なし | 現在のプロセスはデフォルトで認識されません。 SetProcessDpiAwareness 関数または SetProcessDPIAware 関数を呼び出すことによって、この設定をプログラムで変更できます。 |
最初に認識された項目は "system" | 現在のプロセスはシステムdpiに対応しています。 |
最初に認識された項目は "permonitor" | 現在のプロセスは、per-monitor dpi 対応です。 |
最初に認識された項目は "permonitorv2" | 現在のプロセスでは、per-monitor-v2 dpi 認識コンテキストが使用されます。 このアイテムは、Windows 10 バージョン 1703 以降でのみ認識されます。 |
最初に認識された項目は "unaware" | 現在のプロセスは認識できません。 SetProcessDpiAwareness 関数または SetProcessDPIAware 関数を呼び出すことによって、この設定をプログラムで変更することはできません。 |
この要素でサポートされる dpi 認識設定の詳細については、DPI_AWARENESS とDPI_AWARENESS_CONTEXT を参照してください。
dpiAwareness には属性がありません。
...
<asmv3:application>
<asmv3:windowsSettings xmlns="//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 は、この要素が有効であることを示します。属性はありません。
...
<asmv3:application>
<asmv3:windowsSettings xmlns="//schemas.microsoft.com/SMI/2017/WindowsSettings">
<gdiScaling>true</gdiScaling>
</asmv3:windowsSettings>
</asmv3:application>
...
</assembly>
highResolutionScrollingAware
高解像度スクロール対応が有効かどうかを指定します。TRUE は、それが有効であることを示します。属性はありません。
longPathAware
MAX_PATHを超える長いパスを有効にします。この要素は、Windows 10 バージョン 1607 以降でサポートされています。詳細については、こちらの記事 を参照してください。
...
<asmv3:application>
<asmv3:windowsSettings xmlns="//schemas.microsoft.com/SMI/2016/WindowsSettings">
<ws2:longPathAware>true</ws2:longPathAware>
</asmv3:windowsSettings>
</asmv3:application>
...
</assembly>
printerDriverIsolation
プリンタードライバーの分離を有効にするかどうかを指定します。TRUE は、それが有効であることを示します。属性はありません。プリンター ドライバーの分離は、プリンター ドライバー、印刷スプーラーが実行されるプロセスから独立したプロセスで実行を有効にすると Windows の印刷サービスの信頼性を向上します。プリンター ドライバーの分離のためのサポートは、Windows 7 および Windows サーバー 2008 R2 で開始。アプリは、プリンター ドライバーから自分自身を分離し、その信頼性を向上させるためのアプリ マニフェストでプリンタードライバーの分離を宣言できます。つまり、プリンタードライバーにエラーがある場合、アプリがクラッシュすることはありません。
...
<asmv3:application>
<asmv3:windowsSettings xmlns="//schemas.microsoft.com/SMI/2011/WindowsSettings">
<printerDriverIsolation>true</printerDriverIsolation>
</asmv3:windowsSettings>
</asmv3:application>
...
</assembly>
ultraHighResolutionScrollingAware
超高解像度スクロール対応を有効にするかどうかを指定します。TRUE は、それが有効であることを示します。属性はありません。
msix
現在のアプリケーションのスパース MSIX パッケージ の ID 情報を指定します。この要素は、Windows 10 バージョン 2004 以降でサポートされています。
msix 要素は名前空間 になければなりません。
urn:schemas-microsoft-com:msix.v1.次の表に示す属性があります。
publisher | 発行元の情報を記述します。この値は、スパース パッケージ マニフェストの Identity 要素の Publisher 属性と一致する必要があります。 |
hashalg | ファイルのハッシュの作成に使用されるアルゴリズム。この値は、SHA1 にする必要があります。 |
packageName | パッケージの内容を記述します。この値は、スパース パッケージ マニフェストの Identity 要素の Name 属性と一致する必要があります。 /td> |
applicationId | アプリケーションの一意の識別子。この値は、スパース パッケージ マニフェストの Application 要素の Id 属性と一致する必要があります。 |
<msix="urn:schemas-microsoft-com:msix.v1" publisher="CN=Contoso" packageName="ContosoPhotoStore" applicationId="ContosoPhotoStore" /> </assembly>
heapType
使用する Win32 ヒープ API の既定のヒープ実装をオーバーライドします。
- 値 SegmentHeap は、セグメント ヒープが使用されることを示します。セグメントヒープは、一般的に全体的なメモリ使用量を減らす最新のヒープ実装です。この要素は、Windows 10 バージョン 2004(ビルド 19041)以降でサポートされています。
- 他の値はすべて無視されます。
この要素には属性がありません。
...
<asmv3:application>
<asmv3:windowsSettings xmlns="//schemas.microsoft.com/SMI/2020/WindowsSettings">
<heapType>SegmentHeap</heapType>
</asmv3:windowsSettings>
</asmv3:application>
...
</assembly>
例
以下は、MySampleApp.exe という名前のアプリケーションのアプリケーションマニフェストの例です。 アプリケーションは、SampleAssemblyをサイドバイサイドアセンブリで使用します。
UAC 情報をマニフェストに組み込む
HKEY_LOCAL_MACHINE レジストリへの書き込み、Program Files、システムフォルダへアクセスするようなアプリケーションは管理者権限が必要です。右クリックして 「管理者として実行」 しなければ正常動作しないアプリケーションがこれに該当します。
UAC の既定の動作を変更するには、プロジェクトの「プロパティ」を開き、「構成プロパティ」、「リンカー」、「マニフェスト ファイル」を選択クリックして下さい。
「ユーザー アカウント制御(UAC)を有効にする」、「UAC の実行レベル」、および 「UAC による UI 保護のバイパス」 の各プロパティを変更して下さい。
<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 filenamefilename は、リソースのバイナリデータを含むファイルの名前を指定します。ファイルの内容がリソースとして含まれています。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 は生データブロック内のデータのパディングまたはアライメントを実行しません。 ブロック内のデータの適切なアライメントを保証するのはプログラマの責任です。