RES ファイル形式とは?
.res拡張子は、Win32プログラムのビルドプロセス中にリソースコンパイラ(rc.exe)によって生成される、Windowsコンパイル済みリソースファイル形式で使用されます。.resファイルには、カーソル、フォント、ビットマップ画像、アイコン、音声、ダイアログ定義、ストリングテーブル、メニュー、バージョン情報など、特定のプログラムで使用されるバイナリリソースが格納されます。
.rcソーススクリプトは人間が読める形式の入力ファイルです。これをrc.exeでコンパイルすると.resバイナリバンドルが生成され、その後リンカー(link.exe)がこれを完成した.exe実行ファイルまたは.dllライブラリにマージします。
古いWin16ファイルとは対照的に、Win32の.resファイルはUnicodeをサポートしており、リソースタイプや名前の識別子をUnicode文字列としてエンコードできます。バイナリ形式は、オフセット0にある32バイトを占める必須のnull(空の)リソースエントリから始まります。これは実質的なファイルシグネチャとして機能し、16ビット版には存在しませんでした。
.resファイルに埋め込まれる一般的なリソースタイプには以下が含まれます:
RT_ICON/RT_CURSOR- アプリケーションアイコンとマウスカーソルRT_BITMAP- 埋め込まれたBMP画像RT_DIALOG、RT_MENU、RT_STRING- UI定義とストリングテーブルRT_VERSION- Windowsエクスプローラーのプロパティに表示されるファイルバージョンメタデータRT_MANIFEST- UACや視覚スタイル設定のためのサイドバイサイド・アセンブリ・マニフェスト
各リソースエントリには言語識別子(LANGID)が含まれており、同じ.resファイル内に複数のロケール向けのローカライズされた文字列やダイアログを保持することが可能です。
セキュリティと安全性
リスク: LOWコンパイルされた.resは受動的なバイナリデータ(アイコン、ダイアログ、文字列)です。それ自体は実行可能ではないため、リソースエディタで開くことは安全です。現実的な注意点としては、.res拡張子が再利用されていることです。.resという名前のファイルが、代わりにゲームやアプリのアセットアーカイブやシミュレーション結果ファイルである可能性があります。また、「リソース編集」ツールは、既存のプログラムを改ざんしたりクラックしたりするために使用されることがあります。他人の署名済み.exe/.dll内のリソースを編集すると、デジタル署名が壊れ、ライセンスに違反する可能性があります。
形式の詳細
概要- Embarcadero/Borland Delphi & C++Builder .res - Delphi/C++Builderプロジェクトには、バイナリにリンクされるコンパイル済み.res(アイコン、バージョン情報)が含まれています。これはWindowsリソース形式と同じです。
- 汎用「リソース」データファイル(ゲーム/アプリ) - 一部のゲームやアプリケーションは、パックされたアセット/データアーカイブを「.res」と命名しています。これはアプリ固有のものであり、Windowsリソース形式ではありません。
- ANSYS / エンジニアリング結果ファイル - 一部のシミュレーションツール(ANSYSなど)は、解析結果を.resファイルに書き出しますが、これはWindowsリソースとは無関係です。
RES ファイルを開くプログラム
技術的詳細
詳細仕様| 形式タイプ | コンパイル済みバイナリリソースバンドル。ビルドの中間生成物であり、単体で実行可能なファイルではありません |
| 生成元 | Windows SDKおよびVisual Studioビルドツールに含まれる`rc.exe`(Windowsリソースコンパイラ) |
| 使用元 | リンク時にリソースデータを最終的な`.exe`または`.dll`に埋め込む`link.exe`リンカー |
| ファイル構造 | 可変長のリソースエントリのシーケンス。各エントリは固定レイアウトのヘッダー(データサイズ、ヘッダーサイズ、タイプ、名前、データバージョン、メモリフラグ、言語ID、バージョン、特性)と、それに続く生のリソースデータで構成されます |
| ファイルシグネチャ | オフセット0にある32バイトのnullリソースエントリ:データサイズ `0x00000000`、ヘッダーサイズ `0x00000020`、タイプ/名前マーカー `0xFFFF 0x0000 0xFFFF 0x0000` |
| バイト順序 | リトルエンディアン。すべてのマルチバイト整数はIntel(LE)バイト順で格納されます |
| アライメント | 各リソースエントリのデータは、ファイル内でDWORD(4バイト)境界にパディングされます |
| Unicodeサポート | リソースタイプと名前の識別子はUnicodeに対応しています。序数IDは`0xFFFF`プレフィックスワードを使用し、文字列IDはインラインのUTF-16LE null終端です |
| 言語ID (LANGID) | 各リソースエントリはWindows LANGIDを格納し、1つのファイル内で同じリソースタイプ/名前の複数のローカライズ版を保持できます |
| Win32 vs Win16 | 32ビットの`.res`は16ビットのWin16 `.res`とバイナリ互換性がありません。Win16にはnullヘッダーのセンチネルがなく、Unicodeをサポートしない異なるレコードレイアウトを使用していました |
| サポートされるリソースタイプ | `RT_ICON`、`RT_CURSOR`、`RT_BITMAP`、`RT_DIALOG`、`RT_MENU`、`RT_STRING`、`RT_ACCELERATOR`、`RT_VERSION`、`RT_MANIFEST`、`RT_FONT`、およびユーザー定義のカスタムタイプID |
| メモリフラグ | 各エントリには、Windows 3.xのリソース読み込みから継承されたレガシーメモリフラグ(MOVEABLE、PURE、PRELOAD、DISCARDABLE)が含まれています。互換性のために形式内に保持されています |
| マニフェストリソース | XMLアプリケーションマニフェストは、リソースタイプ `RT_MANIFEST`(タイプID 24)として埋め込むことができ、WindowsがUAC昇格設定や視覚スタイルを適用するために使用されます |
| MIMEタイプ | `application/octet-stream`(`.res`専用に登録されたMIMEタイプはありません) |
| ソース入力形式 | リソースディレクティブを介して`.ico`、`.cur`、`.bmp`、およびその他のアセットファイルを参照または埋め込む`.rc`テキストスクリプトからコンパイルされます |
| リリース日 | 1980s-1990s (Windows SDK / Resource Compiler) |
| 仕様書 | learn.microsoft.com |
RES の変換
コミュニティ Q&A
ユーザーからの質問まだ質問はありません。RES ファイルについて最初の質問をしてみましょう。