J'essaie de jouer avec l'objet Environment.OSVersion.Version
et je ne peux pas vraiment dire quelle version indiquerait que le système d'exploitation est Windows XP ou supérieur (par exemple, je veux exclure Windows 2000, ME ou les versions précédentes).Comment savoir si le système d'exploitation est Windows XP ou supérieur?
Répondre
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);
}
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).
... et Windows 7 est 6.1 – Esko
Notez que WinXP 32 bits est la version 5.1; WinXP 64 bits est la version 5.2. –
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
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.
É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
Comment vérifieriez-vous si le système d'exploitation prend en charge RegFree COM? – AngryHacker
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
PlatformID est toujours Win32NT si le système d'exploitation est 64 bits? – AngryHacker
@AngryHacker PlatformID.Win32 = "Le système d'exploitation est Windows NT ou supérieur.", Alors oui. – ParmesanCodice
J'ai changé le code de IsWinXp pour vérifier si c'est Windows XP ou supérieur. Pareil avec Vista. – AngryHacker