Wat is het MANIFEST-bestandsformaat?
Een .manifest-bestand is een XML-document dat door het Windows-besturingssysteem wordt gebruikt om applicatiemetadata, assembly-bindingsinformatie en beveiligingsconfiguratie te verstrekken. Het bevat gestructureerde gegevens in platte tekst die een uitvoerbaar bestand of installatiepakket beschrijven - inclusief vereiste machtigingen, afhankelijke assemblies, bestandsextensies en runtime-parameters.
Windows gebruikt .manifest-bestanden in twee primaire rollen. De eerste is Side-by-Side (SxS) assembly-binding, geïntroduceerd met Windows XP: het manifest vertelt Windows van welke versie van gedeelde bibliotheken (zoals de Common Controls DLL) een applicatie afhankelijk is, waardoor „DLL Hell”-conflicten worden voorkomen waarbij meerdere programma's botsen over gedeelde componenten. Een manifest kan ook de visuele stijlen-engine activeren - waardoor de gethematiseerde weergave van besturingselementen mogelijk wordt - zonder de kernfunctionaliteit of beschikbare functies van de applicatie te wijzigen.
De tweede belangrijke rol, geïntroduceerd in Windows Vista, is het declareren van een UAC (User Account Control) machtigingsniveau. Een manifest dat requireAdministrator of asInvoker specificeert, vertelt Windows welke verhoging van rechten moet worden gevraagd wanneer de gebruiker het programma start.
De .manifest-bestandsnaam komt doorgaans overeen met het uitvoerbare bestand dat het vergezelt, met .manifest erachter geplakt - de manifest voor notepad.exe heet bijvoorbeeld notepad.exe.manifest en bevindt zich in dezelfde map. Als alternatief kan het manifest rechtstreeks in de .EXE of .DLL worden gecompileerd als een ingebedde Win32-resource (resourcetype RT_MANIFEST), wat de voorkeursmethode is voor moderne applicaties.
.manifest-bestanden worden ook vaak gecompileerd in CDF-MS-bestanden, waardoor het onderliggende programma sneller toegang heeft tot applicatieparameters tijdens runtime.
Beveiliging & veiligheid
RISICO: LOWEen .manifest is platte XML-tekst - het kan niet worden uitgevoerd, dus het openen om te lezen is veilig. Bewerken is het echte risico: het wijzigen van het manifest van een programma (vooral het UAC-niveau of assembly-afhankelijkheden) kan het opstarten verstoren of een foutmelding „side-by-side configuratie is onjuist” veroorzaken, dus maak eerst een back-up van het origineel en bewerk het alleen als u het begrijpt. Verwijder geen .exe.manifest dat naast een programma staat - sommige apps starten niet zonder hun externe manifest. Manifests zelf zijn geen malware-vector, hoewel u, zoals bij elk bestand, voorzichtig moet zijn met een bestand met een misleidende dubbele extensie.
Formaatdetails
in een notendop- Java JAR MANIFEST.MF - Binnen .jar-archieven is META-INF/MANIFEST.MF een manifest in platte tekst (geen XML) dat de hoofdklasse en attributen vermeldt.
- Web App Manifest - PWA's gebruiken een JSON-manifest (meestal manifest.json/manifest.webmanifest) dat de installeerbare web-app beschrijft.
- Cache / asset manifest - Verschillende tools (HTML5 AppCache, build-tools, game-engines) schrijven tekst/JSON .manifest-bestanden die gebundelde assets vermelden.
Programma's die MANIFEST-bestanden openen
Technische details
diepe specificaties| Bestandsstructuur | XML (UTF-8 tekst); root-element <assembly> in de urn:schemas-microsoft-com:asm.v1 namespace |
| MIME-type | application/xml |
| Binaire signatuur | Geen - platte XML-tekst; de meeste bestanden beginnen met <?xml version="1.0"?> of direct met <assembly |
| Insluitingsmethode | Kan worden ingebed als een Win32-resource (type RT_MANIFEST, ID 1 voor .exe-bestanden, ID 2 for .dll-bestanden) binnen het binaire hostbestand in plaats van als een afzonderlijk bestand |
| Externe bestandsnaamgeving | Vernoemd naar het bijbehorende uitvoerbare bestand met .manifest erachter (bijv. app.exe.manifest); moet in dezelfde map als het uitvoerbare bestand worden geplaatst |
| Primaire rollen | Side-by-Side (SxS) assembly-versiebinding, UAC-machtigingsniveaudeclaratie, Common Controls v6 visuele stijlen activering, registratievrije COM-activering |
| UAC-vertrouwensniveaus | Ondersteunde requestedExecutionLevel-waarden: asInvoker, highestAvailable, requireAdministrator |
| Belangrijkste XML-namespaces | urn:schemas-microsoft-com:asm.v1 (assembly-identiteit en SxS); urn:schemas-microsoft-com:asm.v3 (UAC trustInfo) |
| SxS-versiebinding | Lijst met afhankelijke assembly-namen en exacte versie-quads (bijv. 6.0.0.0) om het laden van DLL's tijdens runtime om te leiden zonder registervermeldingen |
| Platformondersteuning | Windows XP en later; UAC requestedExecutionLevel en visuele stijlen activering vereisen Windows Vista of later |
| Runtime-mechanisme | Windows laadt manifests in een Activation Context (actctx) bij de start van het proces om assembly-bindingen transparant om te leiden |
| Compilatiedoel | Kan worden gecompileerd naar .cdf-ms (Catalog Definition Format - Manifest Store) bestanden voor snellere toegang tot runtime-parameters |
| Ontwikkelaarstoolchain | Gemaakt en ingebed door Visual Studio, MSBuild en de mt.exe Manifest Tool (Windows SDK); bewerkbaar in elke tekstverwerker |
| Typische bestandsgrootte | 1-10 KB; bevat alleen XML-metadatadeclaraties zonder binaire payload |
| Uitgebracht | Windows XP (2001); UAC privilege manifests since Windows Vista (2007) |
| Specificatie | learn.microsoft.com |
MANIFEST conversies
Community V&A
gevraagd door gebruikersNog geen vragen - wees de eerste om iets te vragen over MANIFEST-bestanden.