GetVersionExA, fonction (sysinfoapi.h)

GetVersionExA peut être modifié ou indisponible pour les versions après Windows 8.1. Utilisez plutôt les fonctions d’assistance de version. Pour Windows 10 applications, consultez Ciblage de vos applications pour Windows.

Avec la publication de Windows 8.1, le comportement de l’API GetVersionEx a changé dans la valeur qu’elle retourne pour la version du système d’exploitation. La valeur retournée par la fonction GetVersionEx dépend désormais de la façon dont l’application est manifestée.

Les applications non manifestées pour Windows 8.1 ou Windows 10 retournent la valeur de version du système d’exploitation Windows 8 (6.2). Une fois qu’une application est manifestée pour une version de système d’exploitation donnée, GetVersionEx retourne toujours la version pour laquelle l’application se manifeste dans les versions ultérieures. Pour manifester vos applications pour Windows 8.1 ou Windows 10, consultez Ciblage de votre application pour Windows.

Syntaxe

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

Paramètres

[in, out] lpVersionInformation

Structure OSVERSIONINFOA ou OSVERSIONINFOEXA qui reçoit les informations du système d’exploitation.

Avant d’appeler la fonction GetVersionEx , définissez le membre dwOSVersionInfoSize de la structure comme approprié pour indiquer la structure de données qui est passée à cette fonction.

Valeur retournée

Si la fonction réussit, la valeur de retour est une valeur différente de zéro.

Si la fonction échoue, la valeur de retour est égale à zéro. Pour obtenir des informations détaillées sur l’erreur, appelez GetLastError. La fonction échoue si vous spécifiez une valeur non valide pour le membre dwOSVersionInfoSize de la structure OSVERSIONINFOA ou OSVERSIONINFOEXA .

Remarques

L’identification du système d’exploitation actuel n’est généralement pas la meilleure façon de déterminer si une fonctionnalité de système d’exploitation particulière est présente. Cela est dû au fait que le système d’exploitation a peut-être ajouté de nouvelles fonctionnalités dans une DLL redistribuable. Au lieu d’utiliser GetVersionEx pour déterminer la plateforme ou le numéro de version du système d’exploitation, testez la présence de la fonctionnalité elle-même. Pour plus d’informations, consultez Version du système d’exploitation.

La fonction GetSystemMetrics fournit des informations supplémentaires sur le système d’exploitation actuel.

Produit Paramètre
Windows XP Édition Media Center SM_MEDIACENTER
Windows XP Starter Edition SM_STARTER
Windows XP Édition Tablet PC SM_TABLETPC
Windows Server 2003 R2 SM_SERVERR2
 

Pour case activée pour des systèmes d’exploitation ou des fonctionnalités de système d’exploitation spécifiques, utilisez la fonction IsOS. La fonction GetProductInfo récupère le type de produit.

Pour récupérer des informations sur le système d’exploitation sur un ordinateur distant, utilisez la fonction NetWkstaGetInfo , la classe WMI Win32_OperatingSystem ou la propriété OperatingSystem de l’interface IADsComputer .

Pour comparer la version actuelle du système à une version requise, utilisez la fonction VerifyVersionInfo au lieu d’utiliser GetVersionEx pour effectuer la comparaison vous-même.

Si le mode de compatibilité est en vigueur, la fonction GetVersionEx signale le système d’exploitation tel qu’il s’identifie, qui peut ne pas être le système d’exploitation installé. Par exemple, si le mode de compatibilité est en vigueur, GetVersionEx signale le système d’exploitation sélectionné pour la compatibilité de l’application.

Exemples

Lorsque vous utilisez la fonction GetVersionEx pour déterminer si votre application s’exécute sur une version particulière du système d’exploitation, case activée pour les numéros de version supérieurs ou égaux aux numéros de version souhaités. Cela garantit que le test réussit pour les versions ultérieures du système d’exploitation. Par exemple, si votre application nécessite Windows XP ou une version ultérieure, utilisez le test suivant.

#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");
}

Pour obtenir un exemple qui identifie le système d’exploitation actuel, consultez Obtention de la version du système.

Notes

L’en-tête sysinfoapi.h définit GetVersionEx comme un alias qui sélectionne automatiquement la version ANSI ou Unicode de cette fonction en fonction de la définition de la constante de préprocesseur UNICODE. Le mélange de l’utilisation de l’alias neutre en encodage avec du code qui n’est pas neutre en encodage peut entraîner des incompatibilités qui entraînent des erreurs de compilation ou d’exécution. Pour plus d’informations, consultez Conventions pour les prototypes de fonction.

Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows 2000 Professionnel [applications de bureau | Applications UWP]
Serveur minimal pris en charge Windows 2000 Server [applications de bureau | Applications UWP]
Plateforme cible Windows
En-tête sysinfoapi.h (inclure Windows.h)
Bibliothèque Kernel32.lib
DLL Kernel32.dll

Voir aussi

GetVersion

OSVERSIONINFOA

OSVERSIONINFOEXA

Version du système d’exploitation

Fonctions d’information système

VerifyVersionInfo

Fonctions d’assistance de version