2009-04-12 6 views

Répondre

6

Si vous utilisez Win32, vous pouvez utiliser l'API GetVersionEx pour identifier le système d'exploitation.

+0

Malheureusement, 'GetVersion' et' GetVersionEx' sont obsolètes depuis W8, en faveur de 'VerifyVersionInfo'. Un mauvais changement, à mon humble avis. –

2

La question immédiate ici est ce que vous essayez de tester? Il vaut mieux comparer check for features que de comparer les numéros de version (puisqu'il existe plusieurs versions de Windows).

VerifyVersionInfo fait les deux, et est la méthode recommandée pour comparer les numéros majeurs/mineurs.

BOOL IsAtLeast2008DC() { 

    OSVERSIONINFOEX osvi = {0}; 
    DWORDLONG mask = 0; 

    osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEX); 
    osvi.dwMajorVersion = 6; 
    osvi.dwMinorVersion = 0; 
    osvi.wServicePackMajor = 0; 
    osvi.wServicePackMinor = 0; 
    osvi.wProductType = VER_NT_DOMAIN_CONTROLLER; 


    VER_SET_CONDITION(mask, VER_MAJORVERSION, VER_GREATER_EQUAL); 
    VER_SET_CONDITION(mask, VER_MINORVERSION, VER_GREATER_EQUAL); 
    VER_SET_CONDITION(mask, VER_SERVICEPACKMAJOR, VER_GREATER_EQUAL); 
    VER_SET_CONDITION(mask, VER_SERVICEPACKMINOR, VER_GREATER_EQUAL); 
    VER_SET_CONDITION(mask, VER_SERVICEPACKMINOR, VER_GREATER_EQUAL); 
    VER_SET_CONDITION(mask, VER_PRODUCT_TYPE, VER_EQUAL); 

    return VerifyVersionInfo(&osvi, 
     VER_MAJORVERSION | VER_MINORVERSION | 
     VER_SERVICEPACKMAJOR | VER_SERVICEPACKMINOR | 
     VER_PRODUCT_TYPE, 
     mask 
    ); 

} 

Pour tester Vista ou une version ultérieure, supprimez les lignes qui mentionnent le type de produit. Vous trouverez plus d'exemples here, mais faites attention à ce que vous recherchez.

+0

Bien que cela fonctionne pour tester "La version actuelle de Windows est-elle assez bonne pour mes besoins minimum?", Elle ne répond pas à la question à laquelle 'GetVersionEx' a répondu:" Quelle est la version de Windows que je cours? " Microsoft ne semble pas vouloir que nous posions cette question plus. :( –

+0

Bien que l'autre commentaire soit une réponse directe, ce n'est * habituellement * pas la bonne solution à un problème – Mark

+0

Il s'avère que je n'ai pas besoin de prendre de décision sur l'une ou l'autre question. à * document * quelle version de Windows mon programme est exécuté par les utilisateurs.Sans la fonctionnalité de 'GetVersionEx', je ne peux pas facilement faire cela.À la place, je dois estimer la famille de la version avec une série de" Est-ce au moins A? "" Est-ce au moins B? "Jusqu'à ce que je trouve la limite où la réponse change, pas aussi satisfaisant pour mes besoins. –

Questions connexes