GetVersionExA-Funktion (sysinfoapi.h)
GetVersionExA- kann nach Windows 8.1 für Versionen geändert oder nicht verfügbar sein. Verwenden Sie stattdessen die Versionshilfsfunktionen. Informationen zu Windows 10-Apps finden Sie unter Für Ihre Anwendungen für Windows.
Mit der Veröffentlichung von Windows 8.1 hat sich das Verhalten der GetVersionEx-API im Wert geändert, der für die Betriebssystemversion zurückgegeben wird. Der von der GetVersionEx--Funktion zurückgegebene Wert hängt nun davon ab, wie die Anwendung manifestiert wird.
Für Windows 8.1 oder Windows 10 nicht manifestierte Anwendungen geben den Windows 8-Betriebssystemversionswert (6.2) zurück. Sobald eine Anwendung für eine bestimmte Betriebssystemversion manifestiert ist, gibt GetVersionEx- immer die Version zurück, für die die Anwendung in zukünftigen Versionen manifestiert ist. Informationen zum Manifestieren Ihrer Anwendungen für Windows 8.1 oder Windows 10 finden Sie unter Targeting your application for 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 das dwOSVersionInfoSize Element der Struktur entsprechend fest, um anzugeben, welche Datenstruktur an diese Funktion übergeben wird.
Rückgabewert
Wenn die Funktion erfolgreich ist, ist der Rückgabewert ein Wert ungleich Null.
Wenn die Funktion fehlschlägt, ist der Rückgabewert null. Rufen Sie GetLastErrorauf, um erweiterte Fehlerinformationen zu erhalten. Die Funktion schlägt fehl, wenn Sie einen ungültigen Wert für die dwOSVersionInfoSize Member des OSVERSIONINFOA- oder OSVERSIONINFOEXA- Struktur angeben.
Bemerkungen
Das Identifizieren des aktuellen Betriebssystems ist in der Regel nicht die beste Methode, um festzustellen, ob ein bestimmtes Betriebssystemfeature vorhanden ist. Dies liegt daran, dass das Betriebssystem möglicherweise neue Features in einer verteilbaren DLL hinzugefügt hat. Anstatt GetVersionEx- zu verwenden, um die Betriebssystemplattform oder Versionsnummer zu ermitteln, testen Sie das Vorhandensein des Features selbst. Weitere Informationen finden Sie unter Betriebssystemversion.
Die GetSystemMetrics--Funktion enthält zusätzliche Informationen zum aktuellen Betriebssystem.
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 für das 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 wirksam ist, meldet die GetVersionEx--Funktion das Betriebssystem, da es sich selbst identifiziert, was möglicherweise nicht das betriebssystem ist, das installiert ist. Wenn beispielsweise der Kompatibilitätsmodus wirksam ist, meldet GetVersionEx das Betriebssystem, das für Anwendungskompatibilität ausgewählt ist,.
Beispiele
Wenn Sie die GetVersionEx--Funktion verwenden, um zu ermitteln, ob Ihre Anwendung auf einer bestimmten Version des Betriebssystems ausgeführt wird, suchen Sie nach Versionsnummern, die größer 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 z. B. 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.
Anmerkung
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 Code, der nicht codierungsneutral ist, 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 |
---|---|
mindestens unterstützte Client- | Windows 2000 Professional [Desktop-Apps | UWP-Apps] |
mindestens unterstützte Server- | Windows 2000 Server [Desktop-Apps | UWP-Apps] |
Zielplattform- | Fenster |
Header- | sysinfoapi.h (include Windows.h) |
Library | Kernel32.lib |
DLL- | Kernel32.dll |