OSVERSIONINFOEXA-Struktur (winnt.h)

Enthält Informationen zur Betriebssystemversion. Die Informationen umfassen Haupt- und Nebenversionsnummern, eine Buildnummer, eine Plattform-ID sowie Informationen zu Produktsammlungen und dem neuesten Service Pack, das auf dem System installiert ist. Diese Struktur wird mit den Funktionen GetVersionEx und VerifyVersionInfo verwendet.

Syntax

typedef struct _OSVERSIONINFOEXA {
  DWORD dwOSVersionInfoSize;
  DWORD dwMajorVersion;
  DWORD dwMinorVersion;
  DWORD dwBuildNumber;
  DWORD dwPlatformId;
  CHAR  szCSDVersion[128];
  WORD  wServicePackMajor;
  WORD  wServicePackMinor;
  WORD  wSuiteMask;
  BYTE  wProductType;
  BYTE  wReserved;
} OSVERSIONINFOEXA, *POSVERSIONINFOEXA, *LPOSVERSIONINFOEXA;

Member

dwOSVersionInfoSize

Die Größe dieser Datenstruktur in Bytes. Legen Sie dieses Element auf fest sizeof(OSVERSIONINFOEX).

dwMajorVersion

Die Hauptversionsnummer des Betriebssystems. Weitere Informationen finden Sie in den Hinweisen.

dwMinorVersion

Die Nebenversionsnummer des Betriebssystems. Weitere Informationen finden Sie in den Hinweisen.

dwBuildNumber

Die Buildnummer des Betriebssystems.

dwPlatformId

Die Betriebssystemplattform. Dieser Member kann VER_PLATFORM_WIN32_NT (2) sein.

szCSDVersion[128]

Eine null-endende Zeichenfolge, z. B. "Service Pack 3", die das neueste Service Pack angibt, das auf dem System installiert ist. Wenn kein Service Pack installiert wurde, ist die Zeichenfolge leer.

wServicePackMajor

Die Hauptversionsnummer des zuletzt auf dem System installierten Service Packs. Beispielsweise ist für Service Pack 3 die Hauptversionsnummer 3. Wenn kein Service Pack installiert wurde, ist der Wert 0 (null).

wServicePackMinor

Die Nebenversionsnummer des zuletzt auf dem System installierten Service Packs. Beispielsweise ist für Service Pack 3 die Nebenversionsnummer 0.

wSuiteMask

Eine Bitmaske, die die im System verfügbaren Produktsammlungen identifiziert. Dieser Member kann eine Kombination der folgenden Werte sein.

Wert Bedeutung
VER_SUITE_BACKOFFICE
0x00000004
Microsoft BackOffice-Komponenten werden installiert.
VER_SUITE_BLADE
0x00000400
Windows Server 2003, Web Edition ist installiert.
VER_SUITE_COMPUTE_SERVER
0x00004000
Windows Server 2003, Compute Cluster Edition ist installiert.
VER_SUITE_DATACENTER
0x00000080
Windows Server 2008 Datacenter, Windows Server 2003, Datacenter Edition oder Windows 2000 Datacenter Server ist installiert.
VER_SUITE_ENTERPRISE
0x00000002
Windows Server 2008 Enterprise, Windows Server 2003, Enterprise Edition oder Windows 2000 Advanced Server ist installiert. Weitere Informationen zu diesem Bitflag finden Sie im Abschnitt Hinweise.
VER_SUITE_EMBEDDEDNT
0x00000040
Windows XP Embedded ist installiert.
VER_SUITE_PERSONAL
0x00000200
Windows Vista Home Premium, Windows Vista Home Basic oder Windows XP Home Edition ist installiert.
VER_SUITE_SINGLEUSERTS
0x00000100
Remotedesktop wird unterstützt, aber nur eine interaktive Sitzung wird unterstützt. Dieser Wert wird festgelegt, es sei denn, das System wird im Anwendungsservermodus ausgeführt.
VER_SUITE_SMALLBUSINESS
0x00000001
Microsoft Small Business Server wurde einmal auf dem System installiert, aber möglicherweise auf eine andere Version von Windows aktualisiert. Weitere Informationen zu diesem Bitflag finden Sie im Abschnitt Hinweise.
VER_SUITE_SMALLBUSINESS_RESTRICTED
0x00000020
Microsoft Small Business Server wird mit der restriktiven Clientlizenz installiert. Weitere Informationen zu diesem Bitflag finden Sie im Abschnitt Hinweise.
VER_SUITE_STORAGE_SERVER
0x00002000
Windows Storage Server 2003 R2 oder Windows Storage Server 2003 ist installiert.
VER_SUITE_TERMINAL
0x00000010
Terminaldienste sind installiert. Dieser Wert wird immer festgelegt.

Wenn VER_SUITE_TERMINAL festgelegt ist, aber VER_SUITE_SINGLEUSERTS nicht festgelegt ist, wird das System im Anwendungsservermodus ausgeführt.

VER_SUITE_WH_SERVER
0x00008000
Windows Home Server ist installiert.
VER_SUITE_MULTIUSERTS
0x00020000
Der AppServer-Modus ist aktiviert.

wProductType

Alle zusätzlichen Informationen zum System. Dieser Member kann einer der folgenden Werte sein.

Wert Bedeutung
VER_NT_DOMAIN_CONTROLLER
0x0000002
Das System ist ein Domänencontroller, und das Betriebssystem ist Windows Server 2012 , Windows Server 2008 R2, Windows Server 2008, Windows Server 2003 oder Windows 2000 Server.
VER_NT_SERVER
0x0000003
Das Betriebssystem ist Windows Server 2012, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003 oder Windows 2000 Server.

Beachten Sie, dass ein Server, der auch ein Domänencontroller ist, als VER_NT_DOMAIN_CONTROLLER und nicht als VER_NT_SERVER gemeldet wird.

VER_NT_WORKSTATION
0x0000001
Das Betriebssystem ist Windows 8, Windows 7, Windows Vista, Windows XP Professional, Windows XP Home Edition oder Windows 2000 Professional.

wReserved

Für die zukünftige Verwendung reserviert.

Bemerkungen

Die Verwendung von Versionsinformationen ist nicht die beste Methode, um ein Feature zu testen. Lesen Sie stattdessen die Dokumentation für das feature of interest. Weitere Informationen zu gängigen Techniken für die Featureerkennung finden Sie unter Betriebssystemversion.

Wenn Sie ein bestimmtes Betriebssystem benötigen, stellen Sie sicher, dass Sie es als unterstützte Mindestversion verwenden, anstatt den Test für das eine Betriebssystem zu entwerfen. Auf diese Weise funktioniert Ihr Erkennungscode auch in zukünftigen Versionen von Windows.

In der folgenden Tabelle sind die von unterstützten Versionen von Windows zurückgegebenen Werte zusammengefasst. Verwenden Sie die Informationen in der Spalte mit der Bezeichnung "Sonstige", um zwischen Betriebssystemen mit identischen Versionsnummern zu unterscheiden.

Betriebssystem Versionsnummer dwMajorVersion dwMinorVersion Sonstiges
Windows 10 10.0* 10 0 OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
Windows Server 2016 10.0* 10 0 OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
Windows 8.1 6.3* 6 3 OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
Windows Server 2012 R2 6.3* 6 3 OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
Windows 8 6.2 6 2 OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
Windows Server 2012 6.2 6 2 OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
Windows 7 6.1 6 1 OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
Windows Server 2008 R2 6.1 6 1 OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
Windows Server 2008 6.0 6 0 OSVERSIONINFOEX.wProductType != VER_NT_WORKSTATION
Windows Vista 6.0 6 0 OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION
Windows Server 2003 R2 5,2 5 2 GetSystemMetrics(SM_SERVERR2) != 0
Windows Home Server 5,2 5 2 OSVERSIONINFOEX.wSuiteMask & VER_SUITE_WH_SERVER
Windows Server 2003 5,2 5 2 GetSystemMetrics(SM_SERVERR2) == 0
Windows XP Professional x64 Edition 5,2 5 2 (OSVERSIONINFOEX.wProductType == VER_NT_WORKSTATION) && (SYSTEM_INFO.wProcessorArchitecture ==PROCESSOR_ARCHITECTURE_AMD64)
Windows XP 5,1 5 1 Nicht zutreffend
Windows 2000 5.0 5 0 Nicht zutreffend
*Für Anwendungen, die für Windows 8.1 oder Windows 10 manifestiert wurden. Anwendungen, die nicht für Windows 8.1 oder Windows 10 manifestiert werden, geben den Wert der Windows 8 Betriebssystemversion (6.2) zurück. Informationen zum Manifestieren Ihrer Anwendungen für Windows 8.1 oder Windows 10 finden Sie unter Targeting ihrer Anwendung für Windows.
 

Sie sollten sich nicht nur auf das VER_SUITE_SMALLBUSINESS-Flag verlassen, um zu bestimmen, ob Small Business Server auf dem System installiert wurde, da sowohl dieses Flag als auch das VER_SUITE_SMALLBUSINESS_RESTRICTED-Flag festgelegt werden, wenn diese Produktsuite installiert wird. Wenn Sie diese Installation auf Windows Server Standard Edition aktualisieren, wird das VER_SUITE_SMALLBUSINESS_RESTRICTED-Flag gelöscht. Das VER_SUITE_SMALLBUSINESS-Flag bleibt jedoch festgelegt. In diesem Fall bedeutet dies, dass Small Business Server einmal auf diesem System installiert wurde. Wenn diese Installation Enterprise Edition weiter auf Windows Server aktualisiert wird, bleibt das VER_SUITE_SMALLBUSINESS-Flag festgelegt.

Wenn der Kompatibilitätsmodus aktiviert ist, enthält die OSVERSIONINFOEX-Struktur Informationen zum Betriebssystem, das für die Anwendungskompatibilität ausgewählt ist.

Um zu ermitteln, ob eine Win32-basierte Anwendung auf WOW64 ausgeführt wird, rufen Sie die IsWow64Process-Funktion auf. Rufen Sie die GetNativeSystemInfo-Funktion auf, um festzustellen, ob auf dem System eine 64-Bit-Version von Windows ausgeführt wird.

Die GetSystemMetrics-Funktion stellt die folgenden zusätzlichen Informationen zum aktuellen Betriebssystem bereit.

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

Beispiele

Ein Beispiel finden Sie unter Abrufen der Systemversion.

Hinweis

Der winnt.h-Header definiert OSVERSIONINFOEX 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 [nur Desktop-Apps]
Unterstützte Mindestversion (Server) Windows 2000 Server [nur Desktop-Apps]
Kopfzeile winnt.h (Einschließen von Windows.h)

Weitere Informationen

IsWow64Process

OSVERSIONINFO

Versionshilfs-APIs