如何判断操作系统是Windows XP还是更高版本?

Ang*_*ker 26 c# windows windows-xp version .net-2.0

我正在尝试使用该Environment.OSVersion.Version对象,并且无法确定哪个版本表明操作系统是Windows XP或更高版本(例如,我想要排除Windows 2000,ME或以前的版本).

Par*_*ice 45

使用该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);
}
Run Code Online (Sandbox Code Playgroud)

  • @AngryHacker PlatformID.Win32 ="操作系统是Windows NT或更高版本.",是的. (2认同)

Ric*_*ard 9

检查Major属性是否大于或等于5,如果5则Minor至少为1.(XP为5.1,2003为5.2,Vista/2008为6.0).

MSDN上的Windows版本号列表.

  • 请注意,WinXP 32位版本为5.1; WinXP 64位是5.2版. (3认同)
  • ...而Windows 7是6.1 (2认同)

Ste*_*art 5

您不应该检查版本号.相反,您应该检查所需的功能.如果它是您所追求的特定API,例如LoadLibrary和GetProcAddress,那么您就不依赖于版本号.