Ausrichten Ihrer Anwendung auf Windows

In Windows 8.1 und höher sind die Funktionen GetVersion und GetVersionEx veraltet. Ab Windows 10 ist auch die VerifyVersionInfo-Funktion veraltet. Sie können die veralteten Funktionen weiterhin aufrufen, aber wenn Ihre Anwendung nicht speziell auf Windows 8.1 oder höher ausgerichtet ist, geben die Funktionen die Windows 8 Version (6.2) zurück.

Hinweis

GetVersion, GetVersionEx, VerifyVersionInfo und die Versionshilfsfunktionen sind nur für Desktop-Apps vorgesehen. Universelle Windows-Apps können die Eigenschaft AnalyticsInfo.VersionInfo für Telemetrie- und Diagnoseprotokolle verwenden.

Damit Ihre App auf Windows 8.1 oder höher ausgerichtet ist, müssen Sie ein App-Manifest (ausführbare Datei) für die ausführbare Datei der App einschließen. Anschließend müssen Sie im <Kompatibilitätsabschnitt> des Manifests für jede Windows-Version, die Sie deklarieren möchten, die von Ihrer App unterstützt wird, ein <unterstütztesOS-Element> hinzufügen.

Das folgende Beispiel zeigt eine App-Manifestdatei für eine App, die alle Versionen von Windows von Windows Vista bis Windows 11 unterstützt:

<!-- 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>

Das Deklarieren der Unterstützung für Windows 8.1 oder höher in Ihrem App-Manifest hat keine Auswirkungen auf die Ausführung Ihrer App unter früheren Betriebssystemen.

Das obige App-Manifest enthält auch einen <TrustInfo-Abschnitt>, der angibt, wie das System es in Bezug auf die Benutzerkontensteuerung (UAC) behandeln soll. Das Hinzufügen von trustInfo ist nicht unbedingt erforderlich, aber es wird dringend empfohlen, auch wenn Ihre App kein bestimmtes UAC-bezogenes Verhalten benötigt. Insbesondere, wenn Sie trustInfo überhaupt nicht hinzufügen, unterliegen 32-Bit-x86-Versionen Ihrer App der UAC-Dateivirtualisierung, wodurch Schreibvorgänge in administratorrechtlich privilegierte Ordner wie die Windows-Systemordner erfolgreich sind, wenn sie andernfalls fehlschlagen würden, aber an einen benutzerspezifischen "VirtualStore"-Ordner umgeleitet werden.