Как определить, установлена ​​ли ОС Windows XP или выше? - PullRequest
26 голосов
/ 28 апреля 2010

Я пытаюсь поиграть с объектом Environment.OSVersion.Version и не могу точно сказать, какая версия будет указывать на то, что ОС Windows XP или выше (например, я хочу исключить Windows 2000, ME или предыдущие версии).

Ответы [ 3 ]

45 голосов
/ 28 апреля 2010

Используйте объект System.OperatingSystem, затем отфильтруйте номера основных и второстепенных версий.

Я использовал эти функции в прошлом:

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);
}
9 голосов
/ 28 апреля 2010

Убедитесь, что свойство Major больше или равно 5, и если 5, то Minor равно как минимум 1. (XP был 5.1, 2003 был 5.2, Vista / 2008 был 6.0).

Список номеров версий Windows на MSDN .

5 голосов
/ 28 апреля 2010

Вы не должны проверять номер версии. Вместо этого вам следует проверить функциональность, которая вам нужна. Если вам нужен конкретный API, например, LoadLibrary и GetProcAddress, то вы не зависите от номера версии.

...