Condividi tramite


Destinazione della tua applicazione per Windows

In Windows 8.1 e versioni successive le funzioniGetVersion e GetVersionExsono state deprecate. A partire da Windows 10, anche la funzioneVerifyVersionInfoè deprecata. Puoi comunque chiamare le funzioni deprecate, ma se l'applicazione non è specificamente destinato a Windows 8.1 o versioni successive, le funzioni restituiranno la versione di Windows 8 (6.2).

Nota

GetVersion, GetVersionEx, VerifyVersionInfoe le funzioni helper della versione sono solo per le app desktop. Le app di Windows universali possono usare la proprietàAnalyticsInfo.VersionInfo per i log di telemetria e diagnostica.

Per consentire all'app di rivolgersi a Windows 8.1 o versioni successive, è necessario includere un manifesto app (eseguibile) per l'eseguibile dell'app. Quindi, nella sezione <compatibilità> del manifesto, dovrai aggiungere un elemento <supportedOS> per ogni versione di Windows per cui vuoi dichiarare che l'app è supportata.

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 versione successiva 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 il modo in cui il sistema deve trattarlo in relazione a controllo dell'account utente (UAC). L'aggiunta di trustInfo non è essenziale, ma è altamente consigliata, anche quando l'app non richiede alcun comportamento specifico correlato all'interfaccia utente. In particolare, se non si aggiunge trustInfo, le versioni a 32 bit x86 dell'app saranno soggette alla virtualizzazione dei file UAC, la quale consente di scrivere nelle cartelle di sistema di Windows con privilegi di amministratore, operazione che solitamente fallirebbe, reindirizzandole invece a una cartella "VirtualStore" specifica per l'utente.