2010-01-20 3 views
9

Travailler sur un projet et doit pouvoir déterminer si l'O/S est Windows 7, Vista ou XP par défaut. Je comprends que je pourrais courir dans Win2K et les versions antérieures, mais disons que ce n'est pas un problème car d'autres codes l'attraperont avant d'arriver à ce point. Mon application sera en C++ pour le moment en utilisant VS2005. J'ai trouvé des articles et des exemples de code, mais ils semblent très gonflés pour mes utilisations. Je cherche juste un retour rapide et sale.Déterminer si O/S est Windows 7

http://msdn.microsoft.com/en-us/library/ms724358%28VS.85%29.aspx

Répondre

18

Liste des Windows Version, en utilisant GetVersionEx:

Version Number Description 
6.1    Windows 7 /Windows 2008 R2 
6.0    Windows Vista/Windows 2008 
5.2    Windows 2003 
5.1    Windows XP 
5.0    Windows 2000 
+0

Malheureusement, cela ne fait pas la différence entre les récentes plates-formes Workstation et Server. Voir: http://www.codeproject.com/script/Articles/ViewDownloads.aspx?aid=10476 –

+0

Voir aussi http://en.wikipedia.org/wiki/List_of_Microsoft_Windows_versions pour une liste à jour. Vous pouvez également tester osvi.wProductType == VER_NT_WORKSTATION pour les versions "normales" et "Server" de Windows: 6.1 est Windows 7 (true) ou Windows Server 2008 R2 (false). – ddevienne

18

En général, vous ne voulez pas être contre un essai numéro de version spécifique, mais plutôt de vérifier pour une fonction particulière. Si vous voulez vraiment détecter « Windows 7 ou version ultérieure, » mais ...

#include <windows.h> 

bool IsWin7OrLater() { 
    DWORD version = GetVersion(); 
    DWORD major = (DWORD) (LOBYTE(LOWORD(version))); 
    DWORD minor = (DWORD) (HIBYTE(LOWORD(version))); 

    return (major > 6) || ((major == 6) && (minor >= 1)); 
} 

Pour 2000, comparez majeur et mineur contre 5 et 0, respectivement. Pour XP, comparer contre 5 et 1. Pour Vista, 6 et 0.

3

Le SDK de Windows 8.1 1) introduit un certain nombre de Version Helper functions, qui aident à déterminer la version du système d'exploitation d'une application est en cours d'exécution sur:

#include <VersionHelpers.h> 

... 

    if (IsWindows7OrGreater()) { 
     // Windows 7 or above 
    } else if (IsWindowsVistaOrGreater()) { 
     // Windows Vista 
    } else if (IsWindowsXPOrGreater()) { 
     // Windows XP 
    } else { 
     // Unsupported version of Windows 
    } 

Si vous devez distinguer les éditions client et serveur de Windows, vous pouvez appeler IsWindowsServer.


1) Le SDK de Windows 8.1 peut être utilisé pour créer des applications pour toutes les versions de Windows.

Questions connexes