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. Wenn Ihre Anwendung jedoch 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, VerifyVersionInfound die Versionshilfsfunktionen sind nur für Desktop-Apps vorgesehen. Universelle Windows-Apps können die AnalyticsInfo.VersionInfo-Eigenschaft für Telemetrie- und Diagnoseprotokolle verwenden.

Damit Ihre App Windows 8.1 oder höher als Ziel verwenden kann, 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 ein < > supportedOS-Element für jede Windows Version hinzufügen, die Sie deklarieren möchten, dass Ihre App unterstützt.

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, wenn Ihre App unter vorherigen Betriebssystemen ausgeführt wird.

Das obige App-Manifest enthält auch einen < trustInfo-Abschnitt, >der angibt, wie das System es in Bezug auf die Benutzerkontensteuerung (User Account Control, UAC)behandeln soll. Das Hinzufügen von trustInfo ist nicht zwingend erforderlich, wird jedoch 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.Dadurch können Schreibvorgänge in Ordner mit Administratorberechtigungen wie die Windows Systemordner erfolgreich ausgeführt werden, wenn andernfalls fehlerverursachend, aber an einen benutzerspezifischen Ordner "VirtualStore" umgeleitet werden.