Что такое формат файла RES?
Расширение файла .res используется форматом скомпилированных файлов ресурсов Windows, создаваемым в процессе сборки программ Win32 компилятором ресурсов (rc.exe). Файлы .res хранят двоичные ресурсы, используемые данной программой, включая курсоры, шрифты, растровые изображения, иконки, звуки, определения диалоговых окон, таблицы строк, меню и информацию о версии.
Исходный скрипт .rc является человекочитаемым входным файлом; его компиляция с помощью rc.exe дает двоичный пакет .res, который компоновщик (link.exe) затем объединяет в готовый исполняемый файл .exe или библиотеку .dll.
Файл .res для Win32, в отличие от старых файлов Win16, поддерживает Unicode - идентификаторы типов и имен ресурсов могут быть закодированы как строки Unicode. Двоичный формат начинается с обязательной пустой (null) записи ресурса, занимающей 32 байта со смещением 0, которая служит практической сигнатурой файла и отсутствовала в 16-битной версии.
Общие типы ресурсов, встроенные в файл .res, включают:
RT_ICON/RT_CURSOR- иконки приложений и курсоры мышиRT_BITMAP- встроенные изображения BMPRT_DIALOG,RT_MENU,RT_STRING- определения пользовательского интерфейса и таблицы строкRT_VERSION- метаданные версии файла, отображаемые в свойствах проводника WindowsRT_MANIFEST- манифест сборки side-by-side для настроек UAC и визуальных стилей
Каждая запись ресурса содержит идентификатор языка (LANGID), что позволяет одному и тому же файлу .res содержать локализованные варианты строк и диалогов для нескольких регионов.
Безопасность и защита
РИСК: LOWСкомпилированный .res - это пассивные двоичные данные (иконки, диалоги, строки); он не является исполняемым сам по себе, поэтому открывать его в редакторе ресурсов безопасно. Реальная осторожность касается повторного использования расширения .res: файл с именем .res может оказаться архивом ресурсов игры/приложения или файлом результатов моделирования. Также инструменты «редактирования ресурсов» иногда используются для взлома существующих программ - редактирование ресурсов внутри чужого подписанного .exe/.dll нарушает его цифровую подпись и может нарушать лицензию.
Детали формата
в двух словах- Embarcadero/Borland Delphi & C++Builder .res - Проекты Delphi/C++Builder включают скомпилированный .res (иконки, информация о версии), компонуемый в двоичный файл - тот же формат ресурсов Windows.
- Общий файл данных «resources» (игры/приложения) - Некоторые игры и приложения называют упакованный архив ресурсов/данных «.res»; он специфичен для конкретного приложения и не является форматом ресурсов Windows.
- ANSYS / файл результатов инженерных расчетов - Некоторые инструменты моделирования (например, ANSYS) записывают результаты анализа в файл .res, не имеющий отношения к ресурсам Windows.
Программы, открывающие файлы RES
Технические подробности
глубокая спецификация| Тип формата | Скомпилированный двоичный пакет ресурсов; промежуточный артефакт сборки, а не автономный исполняемый файл |
| Создается с помощью | `rc.exe` (Windows Resource Compiler), входящий в состав Windows SDK и инструментов сборки Visual Studio |
| Используется | Компоновщиком `link.exe`, который встраивает данные ресурсов в конечный `.exe` или `.dll` во время компоновки |
| Структура файла | Последовательность записей ресурсов переменной длины; каждая запись имеет заголовок фиксированного макета (размер данных, размер заголовка, тип, имя, версия данных, флаги памяти, ID языка, версия, характеристики), за которым следуют необработанные данные ресурса |
| Сигнатура файла | 32-байтовая пустая запись ресурса со смещением 0: размер данных `0x00000000`, размер заголовка `0x00000020`, маркеры типа/имени `0xFFFF 0x0000 0xFFFF 0x0000` |
| Порядок байтов | Little-endian; все многобайтовые целые числа хранятся в порядке байтов Intel (LE) |
| Выравнивание | Данные каждой записи ресурса дополняются до границы DWORD (4 байта) внутри файла |
| Поддержка Unicode | Идентификаторы типов и имен ресурсов поддерживают Unicode; порядковые идентификаторы используют префиксное слово `0xFFFF`, строковые идентификаторы являются встроенными UTF-16LE с завершающим нулем |
| ID языка (LANGID) | Каждая запись ресурса хранит Windows LANGID, что позволяет использовать несколько локализованных вариантов одного и того же типа/имени ресурса в одном файле |
| Win32 против Win16 | 32-битный `.res` двоично несовместим с 16-битным Win16 `.res`; в Win16 отсутствовал пустой заголовок-сигнатура и использовался другой макет записи без поддержки Unicode |
| Поддерживаемые типы ресурсов | `RT_ICON`, `RT_CURSOR`, `RT_BITMAP`, `RT_DIALOG`, `RT_MENU`, `RT_STRING`, `RT_ACCELERATOR`, `RT_VERSION`, `RT_MANIFEST`, `RT_FONT`, а также пользовательские идентификаторы типов |
| Флаги памяти | Каждая запись несет устаревшие флаги памяти (MOVEABLE, PURE, PRELOAD, DISCARDABLE), унаследованные от загрузки ресурсов Windows 3.x; сохранены в формате для совместимости |
| Ресурс манифеста | XML-манифест приложения может быть встроен как тип ресурса `RT_MANIFEST` (ID типа 24), используемый Windows для применения настроек повышения прав UAC и визуальных стилей |
| MIME-тип | `application/octet-stream` (специфический MIME-тип для `.res` не зарегистрирован) |
| Исходный формат ввода | Компилируется из текстовых скриптов `.rc`, которые ссылаются на файлы `.ico`, `.cur`, `.bmp` и другие файлы ресурсов или встраивают их с помощью директив ресурсов |
| Выпущен | 1980s-1990s (Windows SDK / Resource Compiler) |
| Спецификация | learn.microsoft.com |
Конвертации RES
Вопросы и ответы сообщества
спрошено пользователямиВопросов пока нет - станьте первым, кто спросит о файлах RES.