Bonjour.
(pr�cision : j'ai tr�s peu d'exp�rience en C++)

Je bosse sur un petit programme et lors du premier lancement de celui-ci, il recueille un certain nombre d'informations sur la machine de l'utilisateur (Version de Windows, Mat�riel...). J'�tais en train d'�crire un petit code sur la d�tection de la version de Windows. Je d�couvre en m�me temps les fonctions de windows.h et l'aide MSDN.

Au d�but, pour la d�tection de la version de Windows, j'�tais parti sur GetVersionEx() qui renvera toutes les informations dans une structure OSVERSIONINFOEX (plusieurs exemples existent sur le web). Et ensuite avec des "if" et divers tests on finit par obtenir le nom de la version. J'ai cependant quelques questions :


1) Quelle est la diff�rence entre GetVersionEx() et GetVersion() et en g�n�ral entre les "Ex" et les "sans Ex" ? Laquelle vaut-il mieux utiliser et pourquoi ?

2) En cherchant un peu j'ai trouv� une fonction IsOs() qui � premi�re vue permettrait de faire le travail plus rapidement qu'avec GetVersionEx(). Seulement aucun des exemples trouv�s sur le net n'utilisent cette fonction alors c'est quoi le hic ?

3) Ah oui y'a aussi un truc qui me "d�range" : dans la doc de IsOs() on lit "Minimum supported client : Windows 2000" alors que c'est sens� pouvoir tester "OS_WIN98_GOLD : The program is running on Windows 98 exactly." Y'a pas comme un probl�me ? Comment le programme pourrait �tre en train de tourner sur Windows 98 si la fonction n'est utilisable qu'� partir de Windows 2000 ?


Et enfin :
4) N'y aurait-il pas une petite fonction qui me dise directement si le syst�me est 32 ou 64 bits ? (j'ai pas trouv�)


Voil�, merci beaucoup


EDIT : Ah oui une derni�re question : que se passera-t-il si un utilisateur sous Windows 2000 lance mon programme et que celui-ci contient une fonction indiqu� sur MSDN comme : "Minimum supported client : Windows XP" : le programme plantera lamentablement ou la fonction ne sera pas ex�cut�e ?