2010-04-28 10 views

Répondre

45

Utilisez l'objet System.OperatingSystem, puis filtrez les numéros de version mineurs majeurs &.

Je l'ai utilisé ces fonctions dans le passé:

static bool IsWinXPOrHigher() 
{ 
    OperatingSystem OS = Environment.OSVersion; 
    return (OS.Platform == PlatformID.Win32NT) && ((OS.Version.Major > 5) || ((OS.Version.Major == 5) && (OS.Version.Minor >= 1))); 
} 

static bool IsWinVistaOrHigher() 
{ 
    OperatingSystem OS = Environment.OSVersion; 
    return (OS.Platform == PlatformID.Win32NT) && (OS.Version.Major >= 6); 
} 
+0

PlatformID est toujours Win32NT si le système d'exploitation est 64 bits? – AngryHacker

+2

@AngryHacker PlatformID.Win32 = "Le système d'exploitation est Windows NT ou supérieur.", Alors oui. – ParmesanCodice

+1

J'ai changé le code de IsWinXp pour vérifier si c'est Windows XP ou supérieur. Pareil avec Vista. – AngryHacker

9

Vérifiez que la propriété Major est supérieure ou égale à 5, et si 5 alors Minor est au moins 1. (XP était de 5,1, 2003 était de 5,2, Vista/2008 était de 6,0).

List of Windows Version Numbers on MSDN.

+2

... et Windows 7 est 6.1 – Esko

+3

Notez que WinXP 32 bits est la version 5.1; WinXP 64 bits est la version 5.2. –

+0

Et c'est exactement pourquoi vous devriez chercher la chose dont vous avez besoin au lieu de vérifier le numéro de version, et pourquoi Win7 est la version 6.1 et non 7.0. Vérification du numéro de version est facile de se tromper, et ne vous dit pas toujours ce que vous vouliez savoir. – Stewart

5

Vous ne devriez pas vérifier le numéro de version. Au lieu de cela, vous devriez vérifier la fonctionnalité dont vous avez besoin. Si vous recherchez une API spécifique, par exemple LoadLibrary et GetProcAddress, vous ne dépendez pas du numéro de version.

+0

Étant donné qu'une dépendance est la raison pour laquelle il a besoin de la version, c'est une très bonne idée. – daramarak

+0

Comment vérifieriez-vous si le système d'exploitation prend en charge RegFree COM? – AngryHacker

+0

Essayez de charger un composant à partir de votre manifeste. Si cela ne fonctionne pas, la plate-forme ne prend pas en charge regfree COM – Stewart