2 using System.Collections.Generic;
4 using System.Management;
8 public static class COS
11 /// OSがXP以前ならfalse, Vista以降ならtrueを返す
13 /// <returns></returns>
14 public static bool bIsVistaOrLater()
16 return bCheckOSVersion(6, 0);
19 /// OSがVista以前ならfalse, Win7以降ならtrueを返す
21 /// <returns></returns>
22 public static bool bIsWin7OrLater()
24 return bCheckOSVersion(6, 1);
27 /// OSがWin7以前ならfalse, Win8以降ならtrueを返す
29 /// <returns></returns>
30 public static bool bIsWin8OrLater()
32 return bCheckOSVersion(6, 2);
35 /// OSがWin10以前ならfalse, Win10以降ならtrueを返す
37 /// <returns></returns>
38 public static bool bIsWin10OrLater()
40 return bCheckOSVersion(10, 0);
43 /// OSがWin10以降、かつ指定build以降ならtrueを返す
45 /// <returns></returns>
46 public static bool bIsWin10OrLater(WIN10BUILD build)
48 if (bCheckOSVersion(10, 0))
50 if ( GetWin10BuildNumber() >= build )
67 /// 指定のOSバージョン以上であればtrueを返す
69 private static bool bCheckOSVersion(int major, int minor)
72 //System.OperatingSystem os = System.Environment.OSVersion;
73 //if (os.Platform != PlatformID.Win32NT) // NT系でなければ、XP以前か、PC Windows系以外のOS。
77 //var mmb = tpGetOSVersion();
78 int _major, _minor, _build;
79 tpGetOSVersion(out _major, out _minor, out _build);
81 //if (os.Version.Major >= major && os.Version.Minor >= minor)
86 else if (_major == major && _minor >= minor)
97 //public static (int major, int minor, int build) tpGetOSVersion()
98 public static void tpGetOSVersion(out int major, out int minor, out int build)
100 //var result = (major: 0, minor: 0, build: 0);
105 System.Management.ManagementClass mc =
106 new System.Management.ManagementClass("Win32_OperatingSystem");
107 System.Management.ManagementObjectCollection moc = mc.GetInstances();
109 foreach (System.Management.ManagementObject mo in moc)
111 string ver = mo["Version"].ToString();
112 string[] majorminor = ver.Split(new char[] { '.' }, StringSplitOptions.None);
114 major = Convert.ToInt32(majorminor[0]);
115 minor = Convert.ToInt32(majorminor[1]);
116 build = Convert.ToInt32(mo["BuildNumber"]);
118 break; // 1回ループで終了(でいいよね)
125 public enum WIN10BUILD : int
127 TH1 = 10240, // 1507:
128 TH2 = 10586, // 1511: November Update
129 RS1 = 14393, // 1607: Anniversary Update
130 RS2 = 15063, // 1703: Creators Update
131 RS3 = 16299, // 1709: Fall Creators Update
132 RS4 = 17134, // 1803: April 2018 Update
133 RS5 = 17763, // 1809: October 2018 Update
134 _19H1 = 18362, // 1903: May 2019 Update
138 public static WIN10BUILD GetWin10BuildNumber()
140 WIN10BUILD ret = WIN10BUILD.UNKNOWN;
142 //var mmb = tpGetOSVersion();
143 int major, minor, build;
144 tpGetOSVersion(out major, out minor, out build);
148 ret = WIN10BUILD.NOTWIN10;
152 ret = (WIN10BUILD)build;