Che cos'è il formato di file MANIFEST?
Un file .manifest è un documento XML utilizzato dal sistema operativo Windows per fornire metadati dell'applicazione, informazioni sul binding degli assembly e configurazione della sicurezza. Contiene dati strutturati in testo semplice che descrivono un eseguibile o un pacchetto di installazione - inclusi i privilegi richiesti, gli assembly dipendenti, le estensioni di file e i parametri di runtime.
Windows utilizza i file .manifest in due ruoli principali. Il primo è il binding degli assembly Side-by-Side (SxS), introdotto con Windows XP: il manifest indica a Windows da quale versione delle librerie condivise (come la DLL Common Controls) dipende un'applicazione, prevenendo i conflitti di «DLL Hell» in cui più programmi entrano in contrasto su componenti condivisi. Un manifest può anche attivare il motore degli stili visivi - abilitando l'aspetto a temi dei controlli - senza modificare la funzionalità principale dell'applicazione o le caratteristiche disponibili.
Il secondo ruolo principale, introdotto in Windows Vista, è la dichiarazione di un livello di privilegio UAC (User Account Control). Un manifest che specifica requireAdministrator o asInvoker indica a Windows quale elevazione richiedere quando l'utente avvia il programma.
Il nome del file .manifest in genere corrisponde all'eseguibile che accompagna, con l'aggiunta di .manifest - ad esempio, il manifest per notepad.exe si chiama notepad.exe.manifest e si trova nella stessa cartella. In alternativa, il manifest può essere compilato direttamente nel file .EXE o .DLL come risorsa Win32 incorporata (tipo di risorsa RT_MANIFEST), che è l'approccio preferito per le applicazioni moderne.
I file .manifest vengono comunemente compilati anche in file CDF-MS, fornendo al programma sottostante un accesso più rapido ai parametri dell'applicazione durante l'esecuzione.
Sicurezza e incolumità
RISCHIO: LOWUn file .manifest è testo XML semplice - non può essere eseguito, quindi aprirne uno per leggerlo è sicuro. La modifica è il vero rischio: cambiare il manifest di un programma (specialmente il livello UAC o le dipendenze degli assembly) può impedire l'avvio o causare un errore di «configurazione side-by-side non corretta», quindi esegui prima un backup dell'originale e modificalo solo se sai cosa stai facendo. Non eliminare un file .exe.manifest che si trova accanto a un programma - alcune app non si avviano senza il loro manifest esterno. I manifest di per sé non sono un vettore di malware, anche se, come per ogni file, bisogna fare attenzione a quelli con una doppia estensione ingannevole.
Dettagli del formato
in sintesi- Java JAR MANIFEST.MF - All'interno degli archivi .jar, META-INF/MANIFEST.MF è un manifest in testo semplice (non XML) che elenca la classe principale e gli attributi.
- Web App Manifest - Le PWA utilizzano un manifest JSON (solitamente manifest.json/manifest.webmanifest) che descrive l'app web installabile.
- Cache / asset manifest - Vari strumenti (HTML5 AppCache, strumenti di build, motori di gioco) scrivono file .manifest in testo/JSON che elencano gli asset inclusi.
Programmi che aprono file MANIFEST
Dettagli tecnici
specifiche approfondite| Struttura del file | XML (testo UTF-8); elemento radice <assembly> nel namespace urn:schemas-microsoft-com:asm.v1 |
| Tipo MIME | application/xml |
| Firma binaria | Nessuna - testo XML semplice; la maggior parte dei file inizia con <?xml version="1.0"?> o direttamente con <assembly |
| Metodo di incorporamento | Può essere incorporato come risorsa Win32 (tipo RT_MANIFEST, ID 1 per i file .exe, ID 2 per i file .dll) all'interno del binario host invece di esistere come file separato |
| Nomenclatura file esterni | Prende il nome dall'eseguibile associato con l'aggiunta di .manifest (es. app.exe.manifest); deve essere posizionato nella stessa directory dell'eseguibile |
| Ruoli primari | Binding della versione degli assembly Side-by-Side (SxS), dichiarazione del livello di privilegio UAC, attivazione degli stili visivi Common Controls v6, attivazione COM senza registrazione |
| Livelli di attendibilità UAC | Valori requestedExecutionLevel supportati: asInvoker, highestAvailable, requireAdministrator |
| Namespace XML chiave | urn:schemas-microsoft-com:asm.v1 (identità assembly e SxS); urn:schemas-microsoft-com:asm.v3 (UAC trustInfo) |
| Binding versione SxS | Elenca i nomi degli assembly dipendenti e le quadruple di versione esatte (es. 6.0.0.0) per reindirizzare il caricamento delle DLL al runtime senza voci di registro |
| Supporto piattaforma | Windows XP e successivi; UAC requestedExecutionLevel e l'attivazione degli stili visivi richiedono Windows Vista o versioni successive |
| Meccanismo di runtime | Windows carica i manifest in un Activation Context (actctx) all'avvio del processo per reindirizzare i binding degli assembly in modo trasparente |
| Target di compilazione | Può essere compilato in file .cdf-ms (Catalog Definition Format - Manifest Store) per un accesso più rapido ai parametri di runtime |
| Toolchain per sviluppatori | Creato e incorporato da Visual Studio, MSBuild e dal Manifest Tool mt.exe (Windows SDK); modificabile in qualsiasi editor di testo semplice |
| Dimensione tipica del file | 1-10 KB; contiene solo dichiarazioni di metadati XML senza payload binario |
| Rilasciato | Windows XP (2001); UAC privilege manifests since Windows Vista (2007) |
| Specifica | learn.microsoft.com |
Conversioni MANIFEST
Domande e risposte della community
chiesto dagli utentiAncora nessuna domanda - sii il primo a chiedere informazioni sui file MANIFEST.