Destinazione dell'applicazione per Windows
In Windows 8.1 e versioni successive le funzioni GetVersion e GetVersionEx sono deprecate. A partire da Windows 10, anche la funzione VerifyVersionInfo è deprecata. È comunque possibile chiamare le funzioni deprecate, ma se l'applicazione non è specificamente destinato Windows 8.1 o versione successiva, le funzioni restituiranno la versione Windows 8 (6.2).
Nota
Le funzioni GetVersion, GetVersionEx, VerifyVersionInfo e Version Helper sono solo per le app desktop. Le app di Windows universali possono usare la proprietà AnalyticsInfo.VersionInfo per i log di telemetria e diagnostica.
Affinché l'app sia destinata a Windows 8.1 o versione successiva, dovrai includere un manifesto dell'app (eseguibile) per l'eseguibile dell'app. Quindi, nella <sezione compatibilità> del manifesto, dovrai aggiungere un <elemento supportedOS> per ogni versione di Windows che vuoi dichiarare che l'app supporta.
L'esempio seguente mostra un file manifesto dell'app per un'app che supporta tutte le versioni di Windows da Windows Vista a Windows 11:
<!-- example.exe.manifest -->
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<assembly manifestVersion="1.0" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3">
<assemblyIdentity
type="win32"
name="Contoso.ExampleApplication.ExampleBinary"
version="1.2.3.4"
processorArchitecture="x86"
/>
<description>Contoso Example Application</description>
<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>
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
<security>
<requestedPrivileges>
<!--
UAC settings:
- app should run at same integrity level as calling process
- app does not need to manipulate windows belonging to
higher-integrity-level processes
-->
<requestedExecutionLevel
level="asInvoker"
uiAccess="false"
/>
</requestedPrivileges>
</security>
</trustInfo>
</assembly>
La dichiarazione del supporto per Windows 8.1 o versioni successive nel manifesto dell'app non avrà alcun effetto durante l'esecuzione dell'app nei sistemi operativi precedenti.
Il manifesto dell'app precedente include anche una <sezione trustInfo>, che specifica come deve essere considerata dal sistema rispetto al controllo dell'account utente. L'aggiunta di trustInfo non è essenziale, ma è altamente consigliata, anche quando l'app non necessita di un particolare comportamento correlato all'interfaccia utente. In particolare, se non si aggiunge trustInfo , le versioni x86 a 32 bit dell'app saranno soggette alla virtualizzazione dei file UAC, che consente di scrivere in cartelle con privilegi di amministratore come le cartelle di sistema di Windows per avere esito positivo quando altrimenti avranno esito negativo, ma li reindirizza a una cartella "VirtualStore" specifica dell'utente.