Manifesti dell'applicazione

Un manifesto dell'applicazione (noto anche come manifesto dell'applicazione side-by-side o un manifesto fusion ) è un file XML che descrive e identifica gli assembly condivisi e privati side-by-side a cui un'applicazione deve essere associata in fase di esecuzione. Le versioni di questi assembly devono corrispondere a quelle utilizzate per testare l'applicazione. I manifesti dell'applicazione possono anche descrivere i metadati per i file privati dell'applicazione.

Per un elenco completo dello schema XML, vedere Schema di file manifesto.

I manifesti dell'applicazione hanno gli elementi e gli attributi seguenti.

Elemento Attributi Richiesto
assembly
manifestVersion
noInherit No
Assemblyidentity
type
name
language No
Processorarchitecture No
version
Publickeytoken No
Compatibilità No
application No
supportedOS No
ID
maxversiontested No
ID
dipendenza No
dependentAssembly No
file No
name
hashalg No
hash No
activatableClass No
name
Threadingmodel
activeCodePage No
autoElevate No
disableTheming No
disableWindowFiltering No
dpiAware No
dpiAwareness No
gdiScaling No
highResolutionScrollingAware No
longPathAware No
printerDriverIsolation No
ultraHighResolutionScrollingAware No
msix No
heapType No
supportedArchitectures No
Trustinfo No

Percorso del file

Se possibile, è necessario incorporare il manifesto dell'applicazione come risorsa nel file dell'applicazione .exe o .dll. Se non è possibile farlo, è possibile inserire il file manifesto dell'applicazione nella stessa directory di .exe o .dll.

Per altre informazioni, vedi Installazione di assembly side-by-side.

File name

Per convenzione, un manifesto dell'applicazione deve avere lo stesso nome del file eseguibile dell'app, con l'estensione .manifest aggiunta.

Ad esempio, un manifesto dell'applicazione che fa riferimento a example.exe o deve usare la sintassi del nome file seguente (se l'ID risorsa è 1, è possibile omettere il <segmento ID> risorsa della sintassiexample.dll).

example.exe.<ID> risorsa.manifest

example.dll.<ID> risorsa.manifest

Elementi

I nomi di elementi e attributi fanno distinzione tra maiuscole e minuscole. I valori degli elementi e degli attributi non fanno distinzione tra maiuscole e minuscole, ad eccezione del valore dell'attributo di tipo.

assembly

Elemento contenitore. Il primo sottoelemento deve essere un elemento noInherit o assemblyIdentity . Obbligatorio.

L'elemento assembly deve trovarsi nello spazio dei nomi urn:schemas-microsoft-com:asm.v1. Anche gli elementi figlio dell'assembly devono trovarsi in questo spazio dei nomi, tramite ereditarietà o assegnazione di tag.

L'elemento assembly ha gli attributi seguenti.

Attributo Descrizione
manifestVersion L'attributo manifestVersion deve essere impostato su 1.0.

noInherit

Includere questo elemento in un manifesto dell'applicazione per impostare i contesti di attivazione generati dal manifesto con il flag "no inherit". Quando questo flag non è impostato in un contesto di attivazione e il contesto di attivazione è attivo, viene ereditato da nuovi thread nello stesso processo, finestre, procedure di finestra e Chiamate di procedure asincrone. L'impostazione di questo flag impedisce al nuovo oggetto di ereditare il contesto attivo.

L'elemento noInherit è facoltativo e in genere omesso. La maggior parte degli assembly non funziona correttamente usando un contesto di attivazione senza eredita perché l'assembly deve essere progettato in modo esplicito per gestire la propagazione del proprio contesto di attivazione. L'uso dell'elemento noInherit richiede che tutti gli assembly dipendenti a cui fa riferimento il manifesto dell'applicazione dispongano di un elemento noInherit nel manifesto dell'assembly.

Se noInherit viene utilizzato in un manifesto, deve essere il primo sottoelemento dell'elemento assembly . L'elemento assemblyIdentity deve venire immediatamente dopo l'elemento noInherit . Se noInherit non viene utilizzato, assemblyIdentity deve essere il primo sottoelemento dell'elemento assembly . L'elemento noInherit non dispone di elementi figlio. Non è un elemento valido nei manifesti dell'assembly.

assemblyIdentity

Come primo sottoelemento di un elemento assembly , assemblyIdentity descrive e identifica in modo univoco l'applicazione proprietaria di questo manifesto dell'applicazione. Come primo sottoelemento di un elemento dependentAssembly , assemblyIdentity descrive un assembly side-by-side richiesto dall'applicazione. Si noti che ogni assembly a cui viene fatto riferimento nel manifesto dell'applicazione richiede un assemblyIdentity che corrisponda esattamente all'assemblyIdentity nel manifesto dell'assembly di riferimento.

L'elemento assemblyIdentity ha gli attributi seguenti. Non ha sottoelementi.

Attributo Descrizione
type Specifica l'applicazione o il tipo di assembly. Il valore deve essere win32 e tutto in lettere minuscole. Obbligatorio.
name Denomina in modo univoco l'applicazione o l'assembly. Usare il formato seguente per il nome: Organization.Division.Name. Ad esempio, Microsoft.Windows.mysampleApp. Obbligatorio.
language Identifica la lingua dell'applicazione o dell'assembly. Se l'applicazione o l'assembly è specifico del linguaggio, specificare il codice del linguaggio DHTML. Nell'assemblyIdentity di un'applicazione destinata all'uso globale (indipendente dalla lingua) omettere l'attributo language.
In un assemblyIdentity di un assembly destinato all'uso globale (indipendente dalla lingua) impostare il valore della lingua su *. Facoltativo.
Processorarchitecture Specifica il processore. I valori validi includono x86, amd64, arm e arm64. È anche possibile specificare *, che garantisce che tutte le piattaforme siano destinate. Facoltativo.
version Specifica la versione dell'applicazione o dell'assembly. Usare il formato della versione in quattro parti: mmmmm.nnnnn.ooooo.ppppp. Ognuna delle parti separate da periodi può essere compresa tra 0 e 65535. Per altre informazioni, vedere Versioni dell'assembly. Obbligatorio.
Publickeytoken Stringa esadecimale di 16 caratteri che rappresenta gli ultimi 8 byte dell'hash SHA-1 della chiave pubblica in cui è firmata l'applicazione o l'assembly. La chiave pubblica usata per firmare il catalogo deve essere di 2048 bit o superiore. Obbligatorio per tutti gli assembly side-by-side condivisi.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
 ...
<dependency>
   <dependentAssembly>
      <assemblyIdentity
          type="win32"
          name="Microsoft.Windows.Common-Controls"
          version="6.0.0.0"
          processorArchitecture="*"
          publicKeyToken="6595b64144ccf1df"
          language="*"
       />
   </dependentAssembly>
</dependency>
...
</assembly>

Compatibilità

Contiene almeno un'applicazione. Non ha attributi. Facoltativo. Manifesti dell'applicazione senza un elemento di compatibilità predefinito per La compatibilità di Windows Vista in Windows 7.

L'elemento di compatibilità deve trovarsi nello spazio dei nomi urn:schemas-microsoft-com:compatibility.v1. Anche gli elementi figlio della compatibilità devono trovarsi in questo spazio dei nomi, tramite ereditarietà o assegnazione di tag.

applicazione

Contiene almeno un elemento supportatoOS . A partire da Windows 10 versione 1903, può contenere anche un elemento maxversiontested facoltativo. Non ha attributi. Facoltativo.

supportedOS

L'elemento supportedOS ha l'attributo seguente. Non ha sottoelementi.

Attributo Descrizione
ID Impostare l'attributo Id su {e2011457-1546-43c5-a5fe-008dee3d3f0} per eseguire l'applicazione usando la funzionalità Vista. In questo modo un'applicazione progettata per Windows Vista può essere eseguita in un sistema operativo successivo.
Impostare l'attributo Id su {35138b9a-5d96-4fbd-8e2d-a2440225f93a} per eseguire l'applicazione usando la funzionalità di Windows 7.
Le applicazioni che supportano windows Vista, Windows 7 e la funzionalità di Windows 8 non richiedono manifesti separati. In questo caso, aggiungere i GUID per tutti i sistemi operativi Windows.
Per informazioni sul comportamento dell'attributo ID in Windows, vedi il cookbook sulla compatibilità di Windows 8 e Windows Server 2012.
I GUID seguenti corrispondono ai sistemi operativi indicati:
{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a} -> Windows 10, Windows 11, Windows Server 2016, Windows Server 2019 e Windows Server 2022
{1f676c76-80e1-4239-95bb-83d0f6d0da78} -> Windows 8.1 e Windows Server 2012 R2
{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38} -> Windows 8 e Windows Server 2012
{35138b9a-5d96-4fbd-8e2d-a2440225f93a} -> Windows 7 e Windows Server 2008 R2
{e2011457-1546-43c5-a5fe-008deee3d3f0} -> Windows Vista e Windows Server 2008
È possibile testarlo in Windows 7 o Windows 8.x eseguendo Monitoraggio risorse (resmon), passando alla scheda CPU, facendo clic con il pulsante destro del mouse sulle etichette di colonna, "Seleziona colonna..." e selezionare "Contesto del sistema operativo". In Windows 8.x è anche possibile trovare questa colonna disponibile in Gestione attività (taskmgr). Il contenuto della colonna mostra il valore più alto trovato o "Windows Vista" come impostazione predefinita.

maxversiontested

L'elemento maxversiontested specifica le versioni di Windows che l'applicazione è stata testata a partire dalla versione minima del sistema operativo supportata dall'applicazione fino alla versione massima. Il set completo di versioni è disponibile qui. Questa operazione deve essere usata dalle applicazioni desktop che usano le isole XAML e che non vengono distribuite in un pacchetto MSIX. Questo elemento è supportato in Windows 10, versione 1903 e versioni successive.

L'elemento maxversiontested ha l'attributo seguente. Non ha sottoelementi.

Attributo Descrizione
ID Impostare l'attributo Id su una stringa di versione in 4 parti che specifica la versione massima di Windows su cui è stata testata l'applicazione. Ad esempio, "10.0.18362.1" per Windows 10, versione 1903. Obbligatorio.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
...
    <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
        <application>
            <!-- Windows 10, version 1903 -->
            <maxversiontested Id="10.0.18362.1"/>
            <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
        </application>
    </compatibility>
...
</assembly>

dependency

Contiene almeno un oggetto dependentAssembly. Non ha attributi. Facoltativo.

dependentAssembly

Il primo sottoelemento di dependentAssembly deve essere un elemento assemblyIdentity che descrive un assembly side-by-side richiesto dall'applicazione. Ogni dependentAssembly deve trovarsi all'interno di una sola dipendenza. Non ha attributi.

file

Specifica i file privati dell'applicazione. Facoltativo.

L'elemento file ha gli attributi illustrati nella tabella seguente.

Attributo Descrizione
name Nome del file. Ad esempio, Comctl32.dll. Obbligatorio.
hashalg Algoritmo utilizzato per creare un hash del file. Questo valore deve essere SHA1. Facoltativo.
hash Hash del file a cui fa riferimento per nome. Stringa esadecimale di lunghezza a seconda dell'algoritmo hash. Facoltativo.

activatableClass

Consente alle app desktop non in pacchetto di usare componenti Windows Runtime (WinRT) definiti dall'utente. Questo elemento è supportato in Windows 10, versione 1903 e versioni successive. Per altre informazioni, vedi questo articolo.

L'elemento activatableClass deve trovarsi nello spazio dei nomi urn:schemas-microsoft-com:winrt.v1.

L'elemento activatableClass ha gli attributi seguenti.

Attributo Descrizione
name Specifica l'identificatore di classe per la classe attivabile. Obbligatorio.
Threadingmodel Rappresenta il modello di threading apartment da utilizzare per l'attivazione di un server in-process. I valori validi includono both, STAo MTA. Per altre informazioni, vedere questo articolo . Obbligatorio.
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
...
<file name="WinRTComponent.dll">
    <activatableClass
        name="WinRTComponent.MessageHolder"
        threadingModel="both"
        xmlns="urn:schemas-microsoft-com:winrt.v1"
     />
</file>
...
</assembly>

activeCodePage

In Windows 10 questo elemento forza un processo a usare UTF-8 come tabella codici del processo. Per altre informazioni, vedere Usare la tabella codici UTF-8. In Windows 10 l'unico valore valido per activeCodePage è UTF-8.

A partire da Windows 11, questo elemento consente anche la selezione della tabella codici legacy non UTF-8 o delle tabelle codici per impostazioni locali specifiche per la compatibilità delle applicazioni legacy. Le applicazioni moderne sono fortemente incoraggiate a usare Unicode. In Windows 11, activeCodePage può anche essere impostato sul valore Legacy o un nome delle impostazioni locali, ad esempio en-US o ja-JP.

  • Nei computer configurati in una tabella codici attiva del sistema UTF-8, legacy ripristina il processo nelle tabelle codici delle impostazioni locali di sistema. Se le impostazioni locali di sistema non hanno tabelle codici definite, verrà usato Windows-1252/437. L'impostazione Tabella codici legacy è supportata solo nei manifesti Fusion e solo a partire da Windows 11.
  • Quando viene specificato un nome di impostazioni locali come en-US , la tabella codici del processo verrà impostata in modo appropriato per tale tabella codici delle impostazioni locali. Ad esempio, Windows-1252 e 437 per en-US o 932 per ja-JP.

Questo elemento è stato aggiunto per la prima volta in Windows 10 versione 1903 (aggiornamento di maggio 2019). È possibile dichiarare questa proprietà e la destinazione/esecuzione nelle build precedenti di Windows, ma è necessario gestire il rilevamento e la conversione della tabella codici legacy come di consueto. Questo elemento non ha attributi.

Nell'esempio seguente viene illustrato come usare questo elemento per forzare il processo corrente a usare UTF-8 come tabella codici del processo.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2019/WindowsSettings"> 
      <activeCodePage>UTF-8</activeCodePage> 
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

autoElevate

Specifica se l'elevazione automatica è abilitata. TRUE indica che è abilitato. Non ha attributi. Il file eseguibile deve essere firmato digitalmente da Windows Publisher. Per uso interno.

disableTheming

Specifica se assegnare elementi dell'interfaccia utente a un tema è disabilitato. TRUE indica disabilitato. Non ha attributi.

disableWindowFiltering

Specifica se disabilitare il filtro delle finestre. TRUE disabilita il filtro delle finestre in modo da poter enumerare le finestre immersive dal desktop. disableWindowFiltering è stato aggiunto in Windows 8 e non ha attributi.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2011/WindowsSettings">
      <disableWindowFiltering>true</disableWindowFiltering>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

dpiAware

Specifica se il processo corrente è compatibile con punti per pollice (dpi).

Windows 10, versione 1607: l'elemento dpiAware viene ignorato se è presente l'elemento dpiAwareness . Puoi includere entrambi gli elementi in un manifesto se vuoi specificare un comportamento diverso per Windows 10 versione 1607 rispetto a una versione precedente del sistema operativo.

Nella tabella seguente viene descritto il comportamento risultante in base alla presenza dell'elemento dpiAware e al testo che contiene. Il testo all'interno dell'elemento non fa distinzione tra maiuscole e minuscole.

Stato dell'elemento dpiAware Descrizione
Assente Il processo corrente non è a conoscenza di dpi per impostazione predefinita. È possibile modificare questa impostazione a livello di codice chiamando la funzione SetProcessDpiAwareness o SetProcessDPIAware.
Contiene "true" Il processo corrente è compatibile con dpi di sistema.
Contiene "false" Windows Vista, Windows 7 e Windows 8: il comportamento è uguale a quando dpiAware è assente.
Windows 8.1 e Windows 10: il processo corrente non è a conoscenza di dpi e non è possibile modificare questa impostazione a livello di codice chiamando la funzione SetProcessDpiAwareness o SetProcessDPIAware.
Contiene "true/pm" Windows Vista, Windows 7 e Windows 8: il processo corrente è compatibile con dpi di sistema.
Windows 8.1 e Windows 10: il processo corrente è compatibile con dpi per monitor.
Contiene "per monitor" Windows Vista, Windows 7 e Windows 8: il comportamento è uguale a quando dpiAware è assente.
Windows 8.1 e Windows 10: il processo corrente è compatibile con dpi per monitor.
Contiene qualsiasi altra stringa Windows Vista, Windows 7 e Windows 8: il comportamento è uguale a quando dpiAware è assente.
Windows 8.1 e Windows 10: il processo corrente non è a conoscenza di dpi e non è possibile modificare questa impostazione a livello di codice chiamando la funzione SetProcessDpiAwareness o SetProcessDPIAware.

Per altre informazioni sulle impostazioni di riconoscimento dpi, vedere Sviluppo di applicazioni desktop DPI elevate in Windows.

dpiAware non ha attributi.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
      <dpiAware>true</dpiAware>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

dpiAwareness

Specifica se il processo corrente è compatibile con punti per pollice (dpi).

La versione minima del sistema operativo che supporta l'elemento dpiAwareness è Windows 10, versione 1607. Per le versioni che supportano l'elemento dpiAwareness, dpiAwarenessesegue l'override dell'elemento dpiAware. Puoi includere entrambi gli elementi in un manifesto se vuoi specificare un comportamento diverso per Windows 10 versione 1607 rispetto a una versione precedente del sistema operativo.

L'elemento dpiAwareness può contenere un singolo elemento o un elenco di elementi delimitati da virgole. In quest'ultimo caso viene usato il primo elemento (all'estrema sinistra) nell'elenco riconosciuto dal sistema operativo. In questo modo, è possibile specificare comportamenti diversi supportati nelle versioni future del sistema operativo Windows.

Nella tabella seguente viene descritto il comportamento risultante in base alla presenza dell'elemento dpiAwareness e al testo contenuto nell'elemento più a sinistra riconosciuto. Il testo all'interno dell'elemento non fa distinzione tra maiuscole e minuscole.

dpiAwareness - stato dell'elemento: Descrizione
Elemento assente L'elemento dpiAware specifica se il processo è compatibile con dpi.
Non contiene elementi riconosciuti Il processo corrente non è a conoscenza di dpi per impostazione predefinita. È possibile modificare questa impostazione a livello di codice chiamando la funzione SetProcessDpiAwareness o SetProcessDPIAware.
Il primo elemento riconosciuto è "system" Il processo corrente è compatibile con dpi di sistema.
Il primo elemento riconosciuto è "permonitor" Il processo corrente è compatibile con dpi per monitor.
Il primo elemento riconosciuto è "permonitorv2" Il processo corrente usa il contesto di consapevolezza dpi per monitor-v2. Questo elemento verrà riconosciuto solo in Windows 10 versione 1703 o successiva.
Il primo elemento riconosciuto è "non a conoscenza" Il processo corrente non è a conoscenza di dpi. Non è possibile modificare questa impostazione a livello di codice chiamando la funzione SetProcessDpiAwareness o SetProcessDPIAware.

Per altre informazioni sulle impostazioni di riconoscimento dpi supportate da questo elemento, vedere DPI_AWARENESS e DPI_AWARENESS_CONTEXT.

dpiAwareness non ha attributi.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
      <dpiAwareness>PerMonitorV2, unaware</dpiAwareness>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

gdiScaling

Specifica se il ridimensionamento GDI è abilitato. La versione minima del sistema operativo che supporta l'elemento gdiScaling è Windows 10 versione 1703.

Il framework GDI (graphics device interface) può applicare il ridimensionamento DPI alle primitive e al testo in base al monitoraggio senza aggiornamenti all'applicazione stessa. Ciò può essere utile per le applicazioni GDI che non vengono più aggiornate attivamente.

La grafica non vettoriale (ad esempio bitmap, icone o barre degli strumenti) non può essere ridimensionata da questo elemento. Inoltre, la grafica e il testo che appaiono all'interno di bitmap costruite dinamicamente dalle applicazioni non possono essere ridimensionati da questo elemento. Per altre informazioni, vedere Miglioramento dell'esperienza DPI elevata nelle app desktop basate su GDI.

È possibile modificare questa impostazione a livello di codice chiamando la funzione SetThreadDpiAwarenessContext o SetProcessDpiAwarenessContext con DPI_AWARENESS_CONTEXT_UNAWARE_GDISCALED valore.

TRUE indica che questo elemento è abilitato. Non ha attributi.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2017/WindowsSettings">
      <gdiScaling>true</gdiScaling>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

highResolutionScrollingAware

Specifica se è abilitato lo scorrimento ad alta risoluzione. TRUE indica che è abilitato. Non ha attributi.

longPathAware

Abilita percorsi lunghi che superano MAX_PATH lunghezza. Questo elemento è supportato in Windows 10, versione 1607 e successive. Per altre informazioni, vedi questo articolo.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns:ws2="http://schemas.microsoft.com/SMI/2016/WindowsSettings">
      <ws2:longPathAware>true</ws2:longPathAware>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

printerDriverIsolation

Specifica se l'isolamento del driver della stampante è abilitato. TRUE indica che è abilitato. Non ha attributi. L'isolamento del driver della stampante migliora l'affidabilità del servizio di stampa Windows consentendo l'esecuzione dei driver della stampante in processi separati dal processo in cui viene eseguito lo spooler di stampa. Supporto per l'isolamento del driver della stampante avviato in Windows 7 e Windows Server 2008 R2. Un'app può dichiarare l'isolamento del driver della stampante nel manifesto dell'app per isolarsi dal driver della stampante e migliorarne l'affidabilità. Ovvero, l'app non si arresta in modo anomalo se il driver della stampante presenta un errore.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2011/WindowsSettings">
      <printerDriverIsolation>true</printerDriverIsolation>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

ultraHighResolutionScrollingAware

Specifica se è abilitato il riconoscimento dello scorrimento ad alta risoluzione. TRUE indica che è abilitato. Non ha attributi.

msix

Specifica le informazioni sull'identità di un pacchetto con posizione esterna per l'applicazione corrente (vedere Concedere l'identità del pacchetto tramite la creazione di pacchetti con posizione esterna). Questo elemento è supportato in Windows 10, versione 2004 e versioni successive.

L'elemento msix deve trovarsi nello spazio dei nomi urn:schemas-microsoft-com:msix.v1. Contiene gli attributi illustrati nella tabella seguente.

Attributo Descrizione
publisher Descrive le informazioni sull'editore. Questo valore deve corrispondere all'attributo Publisher nell'elemento Identity nel manifesto del pacchetto dell'app in pacchetto con posizione esterna.
packageName Descrive il contenuto del pacchetto. Questo valore deve corrispondere all'attributo Name nell'elemento Identity nel manifesto del pacchetto dell'app in pacchetto con posizione esterna.
applicationId Identificatore univoco dell'applicazione. Questo valore deve corrispondere all'attributo Id nell'elemento Application nel manifesto del pacchetto dell'app in pacchetto con posizione esterna.
<?xml version="1.0" encoding="utf-8"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1">
  <assemblyIdentity version="1.0.0.0" name="Contoso.PhotoStoreApp"/>
  <msix xmlns="urn:schemas-microsoft-com:msix.v1"
          publisher="CN=Contoso"
          packageName="ContosoPhotoStore"
          applicationId="ContosoPhotoStore"
        />
</assembly>

heapType

Esegue l'override dell'implementazione dell'heap predefinita per le API heap Win32 da usare.

  • Il valore SegmentHeap indica che verrà usato l'heap di segmento. L'heap segmento è un'implementazione moderna dell'heap che in genere ridurrà l'utilizzo complessivo della memoria. Questo elemento è supportato in Windows 10 versione 2004 (build 19041) e versioni successive.
  • Tutti gli altri valori vengono ignorati.

Questo elemento non ha attributi.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2020/WindowsSettings">
      <heapType>SegmentHeap</heapType>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

supportedArchitectures

Per i file eseguibili .NET solo IL, specifica un elenco di architetture native del processore con cui l'applicazione è compatibile. Può contenere uno o più dei valori seguenti, separati da spazi:

  • amd64
  • arm64

Questo elemento non ha attributi.

Questo elemento è supportato in Windows 11 versione 24H2 e successive.

<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
 ...
  <asmv3:application>
    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2024/WindowsSettings">
      <supportedArchitectures>amd64 arm64</supportedArchitectures>
    </asmv3:windowsSettings>
  </asmv3:application>
 ...
</assembly>

Trustinfo

Tutte le app conformi all'interfaccia utente devono avere un livello di esecuzione richiesto aggiunto al manifesto dell'applicazione. I livelli di esecuzione richiesti specificano i privilegi necessari per un'app. Per altre informazioni, vedere Impatto del controllo dell'account utente sull'applicazione.

Il livello di esecuzione richiesto viene specificato con l'attributo di livello del discendente requestedExecutionLevel dell'elemento trustInfo. I valori consentiti per il livello sono:

Valore Descrizione
asInvoker L'applicazione viene eseguita allo stesso livello di autorizzazione del processo che l'ha avviata. È possibile elevare l'applicazione a un livello di autorizzazione superiore selezionando Esegui come Amministrazione istrator.
require Amministrazione istrator L'applicazione viene eseguita usando le autorizzazioni di amministratore. L'utente che avvia l'applicazione deve essere membro del gruppo Amministrazione istrators. Se il processo di apertura non è in esecuzione con autorizzazioni amministrative, il sistema richiede le credenziali.
highestAvailable L'applicazione viene eseguita al livello di autorizzazione più alto possibile. Se l'utente che avvia l'applicazione è membro del gruppo Amministrazione istrators, questa opzione corrisponde a level="requireAdministrator". Se il livello di autorizzazione disponibile più alto è superiore al livello del processo di apertura, il sistema richiede le credenziali.

L'impostazione del livello su highestAvailable garantisce che l'applicazione venga eseguita correttamente con entrambi gli utenti membri del gruppo Amministrazione istrators e quelli che non lo sono. Se l'applicazione può funzionare solo con accesso amministrativo al sistema, contrassegnare l'app con un livello di esecuzione richiesto garantisce requireAdministrator che il sistema identifichi questo programma come app amministrativa ed esegua i passaggi necessari per l'elevazione dei privilegi.

Per impostazione predefinita, il linker di Visual C++ incorpora un frammento di controllo dell'account utente nel manifesto di un'applicazione con un livello di esecuzione di asInvoker.

L'elemento requestedExecutionLevel ha anche un attributo facoltativo uiAccess. Impostare questo valore su true se si vuole che l'applicazione ignori i livelli di protezione dell'interfaccia utente e l'input delle finestre con autorizzazioni superiori sul desktop. Impostare questo attributo su true solo per le applicazioni di accessibilità dell'interfaccia utente. Il valore predefinito è false. È possibile applicare restrizioni aggiuntive alle impostazioni dei criteri di sicurezza, vedere Controllo dell'account utente: solo applicazioni UIAccess elevate installate in posizioni sicure. Per altre informazioni, vedere Considerazioni sulla sicurezza per assistive Technologies.

Se si specifica il nodo requestedExecutionLevel, verrà disabilitata la virtualizzazione dei file e del Registro di sistema. Se si vuole usare Virtualizzazione file e Registro di sistema per la compatibilità con le versioni precedenti, omettere il nodo requestedExecutionLevel .

<trustInfo xmlns="urn:schemas-microsoft-com:asm.v2">
  <security>
    <requestedPrivileges xmlns="urn:schemas-microsoft-com:asm.v3">
      <requestedExecutionLevel level="asInvoker" uiAccess="false" />
    </requestedPrivileges>
  </security>
</trustInfo>

Esempio

Di seguito è riportato un esempio di manifesto dell'applicazione per un'applicazione denominata MySampleApp.exe. L'applicazione utilizza l'assembly SampleAssembly side-by-side.

<?xml version="1.0" encoding="UTF-8"?>
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
   <assemblyIdentity type="win32" name="MyOrganization.MyDivision.MySampleApp" version="6.0.0.0" processorArchitecture="*" />
   <dependency>
      <dependentAssembly>
         <assemblyIdentity type="win32" name="Proseware.Research.SampleAssembly" version="6.0.0.0" processorArchitecture="*" publicKeyToken="0000000000000000" />
      </dependentAssembly>
   </dependency>
   <compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1">
      <application>
         <!-- Windows 10 and Windows 11 -->
         <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" />
         <!-- Windows 8.1 -->
         <supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />
         <!-- Windows 8 -->
         <supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />
         <!-- Windows 7 -->
         <supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />
         <!-- Windows Vista -->
         <supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />
      </application>
   </compatibility>
</assembly>