Wat is het RES-bestandsformaat?
De bestandsextensie .res wordt gebruikt door het Windows gecompileerde resourcebestandsformaat, geproduceerd tijdens het bouwproces van een Win32-programma door de Resource Compiler (rc.exe). .res-bestanden slaan binaire bronnen op die door een bepaald programma worden gebruikt, waaronder cursors, lettertypen, bitmapafbeeldingen, pictogrammen, geluiden, dialoogdefinities, tekenreekstabellen, menu's en versie-informatie.
Een .rc-bronscript is de voor mensen leesbare invoer; het compileren ervan met rc.exe levert een binaire .res-bundel op, die de linker (link.exe) vervolgens samenvoegt tot een voltooid .exe-uitvoerbaar bestand of een .dll-bibliotheek.
Een Win32 .res-bestand ondersteunt, in tegenstelling tot oudere Win16-bestanden, Unicode - resourcetype- en naam-id's kunnen worden gecodeerd als Unicode-tekenreeksen. Het binaire formaat begint met een verplichte null (lege) resource-ingang van 32 bytes op offset 0, die fungeert als de praktische bestandssignatuur en niet bestond in de 16-bits variant.
Veelvoorkomende resourcetypen die in een .res-bestand zijn ingebed, zijn onder meer:
RT_ICON/RT_CURSOR- applicatiepictogrammen en muiscursorsRT_BITMAP- ingebedde BMP-afbeeldingenRT_DIALOG,RT_MENU,RT_STRING- UI-definities en tekenreekstabellenRT_VERSION- metagegevens van de bestandsversie die worden weergegeven in de eigenschappen van Windows VerkennerRT_MANIFEST- side-by-side assembly-manifest voor UAC- en visuele stijlinstellingen
Elke resource-ingang bevat een taal-id (LANGID), waardoor hetzelfde .res-bestand gelokaliseerde varianten van tekenreeksen en dialoogvensters voor meerdere landinstellingen kan bevatten.
Beveiliging & veiligheid
RISICO: LOWEen gecompileerde .res bevat passieve binaire gegevens (pictogrammen, dialoogvensters, tekenreeksen); het is op zichzelf niet uitvoerbaar, dus het openen ervan in een resource-editor is veilig. De waarschuwing in de praktijk is dat de .res-extensie wordt hergebruikt: een bestand met de naam .res kan in plaats daarvan een asset-archief van een game/app zijn of een simulatieresultaatbestand. Ook worden „resource editing”-tools soms gebruikt om bestaande programma's te manipuleren of te kraken - het bewerken van resources in de ondertekende .exe/.dll van iemand anders verbreekt de digitale handtekening en kan de licentie schenden.
Formaatdetails
in een notendop- Embarcadero/Borland Delphi & C++Builder .res - Delphi/C++Builder-projecten bevatten een gecompileerde .res (pictogrammen, versie-info) die in het binaire bestand is gekoppeld - hetzelfde Windows-resourceformaat.
- Generiek 'resources' gegevensbestand (games/apps) - Sommige games en applicaties noemen een verpakt asset/gegevensarchief „.res”; dit is app-specifiek, niet het Windows-resourceformaat.
- ANSYS / technisch resultatenbestand - Sommige simulatietools (bijv. ANSYS) schrijven analyseresultaten naar een .res-bestand, niet gerelateerd aan Windows-resources.
Programma's die RES-bestanden openen
Technische details
diepe specificaties| Formaattype | Gecompileerde binaire resourcebundel; een tussenproduct van het bouwproces, geen zelfstandig uitvoerbaar bestand |
| Geproduceerd door | `rc.exe` (Windows Resource Compiler), inbegrepen in de Windows SDK en Visual Studio build tools |
| Gebruikt door | `link.exe` linker, die de resourcegegevens tijdens het koppelen insluit in de uiteindelijke `.exe` of `.dll` |
| Bestandsstructuur | Reeks resource-ingangen van variabele lengte; elke ingang heeft een header met vaste lay-out (gegevensgrootte, headergrootte, type, naam, gegevensversie, geheugenvlaggen, taal-ID, versie, kenmerken) gevolgd door onbewerkte resourcegegevens |
| Bestandssignatuur | 32-byte null resource-ingang op offset 0: gegevensgrootte `0x00000000`, headergrootte `0x00000020`, type/naam-markeringen `0xFFFF 0x0000 0xFFFF 0x0000` |
| Byte-volgorde | Little-endian; alle gehele getallen van meerdere bytes opgeslagen in Intel (LE) byte-volgorde |
| Uitlijning | De gegevens van elke resource-ingang worden opgevuld tot een DWORD (4-byte) grens binnen het bestand |
| Unicode-ondersteuning | Resourcetype- en naam-id's zijn geschikt voor Unicode; ordinale ID's gebruiken een `0xFFFF` prefix-woord, tekenreeks-ID's zijn inline UTF-16LE null-terminated |
| Taal-ID (LANGID) | Elke resource-ingang slaat een Windows LANGID op, waardoor meerdere gelokaliseerde varianten van hetzelfde resourcetype/naam binnen één bestand mogelijk zijn |
| Win32 versus Win16 | 32-bits `.res` is binair incompatibel met 16-bits Win16 `.res`; Win16 miste de null-header sentinel en gebruikte een andere record-lay-out zonder Unicode-ondersteuning |
| Ondersteunde resourcetypen | `RT_ICON`, `RT_CURSOR`, `RT_BITMAP`, `RT_DIALOG`, `RT_MENU`, `RT_STRING`, `RT_ACCELERATOR`, `RT_VERSION`, `RT_MANIFEST`, `RT_FONT`, plus door de gebruiker gedefinieerde aangepaste type-id's |
| Geheugenvlaggen | Elke ingang bevat verouderde geheugenvlaggen (MOVEABLE, PURE, PRELOAD, DISCARDABLE) overgenomen van het laden van resources in Windows 3.x; bewaard in het formaat voor compatibiliteit |
| Manifest-resource | Een XML-applicatiemanifest kan worden ingebed als resourcetype `RT_MANIFEST` (type-ID 24), door Windows gebruikt om UAC-verhogingsinstellingen en visuele stijlen toe te passen |
| MIME-type | `application/octet-stream` (er is geen formaatspecifiek MIME-type geregistreerd voor `.res`) |
| Broninvoerformaat | Gecompileerd uit `.rc` tekstscripts die verwijzen naar of inbedden van `.ico`, `.cur`, `.bmp` en andere asset-bestanden via resource-richtlijnen |
| Uitgebracht | 1980s-1990s (Windows SDK / Resource Compiler) |
| Specificatie | learn.microsoft.com |
RES conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over RES-bestanden.