Freigeben über


GetVersionExA-Funktion (sysinfoapi.h)

GetVersionExA kann für Releases nach Windows 8.1 geändert oder nicht mehr verfügbar sein. Verwenden Sie stattdessen die Versionshilfsfunktionen. Informationen zu Windows 10 Apps finden Sie unter Targeting your applications for Windows.

Mit der Veröffentlichung von Windows 8.1 hat sich das Verhalten der GetVersionEx-API in dem Wert geändert, der für die Betriebssystemversion zurückgegeben wird. Der von der GetVersionEx-Funktion zurückgegebene Wert hängt jetzt davon ab, wie die Anwendung manifestiert wird.

Anwendungen, die nicht für Windows 8.1 oder Windows 10 manifestiert werden, geben den Wert der Windows 8 Betriebssystemversion (6.2) zurück. Sobald eine Anwendung für eine bestimmte Betriebssystemversion manifestiert wird, gibt GetVersionEx immer die Version zurück, für die die Anwendung in zukünftigen Releases manifestiert wird. Informationen zum Manifestieren Ihrer Anwendungen für Windows 8.1 oder Windows 10 finden Sie unter Targeting ihrer Anwendung für Windows.

Syntax

NOT_BUILD_WINDOWS_DEPRECATE BOOL GetVersionExA(
  [in, out] LPOSVERSIONINFOA lpVersionInformation
);

Parameter

[in, out] lpVersionInformation

Eine OSVERSIONINFOA - oder OSVERSIONINFOEXA-Struktur , die die Betriebssysteminformationen empfängt.

Legen Sie vor dem Aufrufen der GetVersionEx-Funktion den dwOSVersionInfoSize-Member der Struktur als angemessen fest, um anzugeben, welche Datenstruktur an diese Funktion übergeben wird.

Rückgabewert

Wenn die Funktion erfolgreich ist, ist der Rückgabewert ein Nichtzero-Wert.

Wenn die Funktion fehlerhaft ist, ist der Rückgabewert null. Um erweiterte Fehlerinformationen zu erhalten, rufen Sie GetLastError auf. Die Funktion schlägt fehl, wenn Sie einen ungültigen Wert für das dwOSVersionInfoSize-Member der OSVERSIONINFOA - oder OSVERSIONINFOEXA-Struktur angeben.

Hinweise

Die Identifizierung des aktuellen Betriebssystems ist in der Regel nicht die beste Möglichkeit, um zu bestimmen, ob ein bestimmtes Betriebssystemfeature vorhanden ist. Dies liegt daran, dass dem Betriebssystem möglicherweise neue Features in einer verteilbaren DLL hinzugefügt wurden. Anstatt GetVersionEx zu verwenden, um die Betriebssystemplattform oder Versionsnummer zu bestimmen, testen Sie, ob das Feature selbst vorhanden ist. Weitere Informationen finden Sie unter Betriebssystemversion.

Die GetSystemMetrics-Funktion stellt zusätzliche Informationen zum aktuellen Betriebssystem bereit.

Produkt Einstellung
Windows XP Media Center Edition SM_MEDIACENTER
Windows XP Starter Edition SM_STARTER
Windows XP Tablet PC Edition SM_TABLETPC
Windows Server 2003 R2 SM_SERVERR2
 

Um nach bestimmten Betriebssystemen oder Betriebssystemfeatures zu suchen, verwenden Sie die IsOS-Funktion . Die GetProductInfo-Funktion ruft den Produkttyp ab.

Um Informationen zum Betriebssystem auf einem Remotecomputer abzurufen, verwenden Sie die NetWkstaGetInfo-Funktion , die Win32_OperatingSystem WMI-Klasse oder die OperatingSystem-Eigenschaft der IADsComputer-Schnittstelle .

Um die aktuelle Systemversion mit einer erforderlichen Version zu vergleichen, verwenden Sie die VerifyVersionInfo-Funktion , anstatt GetVersionEx zu verwenden, um den Vergleich selbst durchzuführen.

Wenn der Kompatibilitätsmodus aktiv ist, meldet die GetVersionEx-Funktion das Betriebssystem so, wie es sich selbst identifiziert, wobei es sich möglicherweise nicht um das installierte Betriebssystem handelt. Wenn beispielsweise der Kompatibilitätsmodus aktiviert ist, meldet GetVersionEx das Betriebssystem, das für die Anwendungskompatibilität ausgewählt ist.

Beispiele

Wenn Sie die GetVersionEx-Funktion verwenden, um zu bestimmen, ob Ihre Anwendung unter einer bestimmten Version des Betriebssystems ausgeführt wird, überprüfen Sie, ob Versionsnummern größer als oder gleich den gewünschten Versionsnummern sind. Dadurch wird sichergestellt, dass der Test für spätere Versionen des Betriebssystems erfolgreich ist. Wenn Ihre Anwendung beispielsweise Windows XP oder höher erfordert, verwenden Sie den folgenden Test.

#include <windows.h>
#include <stdio.h>

void main()
{
    OSVERSIONINFO osvi;
    BOOL bIsWindowsXPorLater;

    ZeroMemory(&osvi, sizeof(OSVERSIONINFO));
    osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);

    GetVersionEx(&osvi);

    bIsWindowsXPorLater = 
       ( (osvi.dwMajorVersion > 5) ||
       ( (osvi.dwMajorVersion == 5) && (osvi.dwMinorVersion >= 1) ));

    if(bIsWindowsXPorLater)
        printf("The system meets the requirements.\n");
    else printf("The system does not meet the requirements.\n");
}

Ein Beispiel, das das aktuelle Betriebssystem identifiziert, finden Sie unter Abrufen der Systemversion.

Hinweis

Der sysinfoapi.h-Header definiert GetVersionEx als Alias, der die ANSI- oder Unicode-Version dieser Funktion basierend auf der Definition der UNICODE-Präprozessorkonstante automatisch auswählt. Das Mischen der Verwendung des codierungsneutralen Alias mit nicht codierungsneutralem Code kann zu Nichtübereinstimmungen führen, die zu Kompilierungs- oder Laufzeitfehlern führen. Weitere Informationen finden Sie unter Konventionen für Funktionsprototypen.

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows 2000 Professional [Desktop-Apps | UWP-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [Desktop-Apps | UWP-Apps]
Zielplattform Windows
Kopfzeile sysinfoapi.h (einschließlich Windows.h)
Bibliothek Kernel32.lib
DLL Kernel32.dll

Siehe auch

Getversion

OSVERSIONINFOA

OSVERSIONINFOEXA

Betriebssystemversion

Systeminformationsfunktionen

VerifyVersionInfo

Versionshilfsfunktionen