@@ -1428,21 +1428,39 @@ static bool ReleaseHelper(String *platformName, String *platformVersion)
14281428 *platformName = " Windows" ;
14291429
14301430 if (platformVersion) {
1431- *platformVersion = " Vista" ;
1432- if (IsWindowsVistaSP1OrGreater ())
1433- *platformVersion = " Vista SP1" ;
1434- if (IsWindowsVistaSP2OrGreater ())
1435- *platformVersion = " Vista SP2" ;
1436- if (IsWindows7OrGreater ())
1437- *platformVersion = " 7" ;
1438- if (IsWindows7SP1OrGreater ())
1439- *platformVersion = " 7 SP1" ;
1440- if (IsWindows8OrGreater ())
1441- *platformVersion = " 8" ;
1442- if (IsWindows8Point1OrGreater ())
1443- *platformVersion = " 8.1 or greater" ;
1444- if (IsWindowsServer ())
1445- *platformVersion += " (Server)" ;
1431+ // https://stackoverflow.com/questions/53393150/c-how-to-detect-windows-server-2019
1432+ // https://techthoughts.info/windows-version-numbers/
1433+ if (IsWindowsServer ()) {
1434+ // 2019 Server +
1435+ if (IsWindowsVersionOrGreater (10 , 0 , 1803 )) {
1436+ *platformVersion = " Server 2019 or greater" ;
1437+ // 2016 Server
1438+ } else if (IsWindowsVersionOrGreater (10 , 0 , 1607 )) {
1439+ *platformVersion = " Server 2016" ;
1440+ // 2012 R2
1441+ } else if (IsWindowsVersionOrGreater (6 , 3 , 0 )) {
1442+ *platformVersion = " Server 2012 R2" ;
1443+ // 2012
1444+ } else if (IsWindowsVersionOrGreater (6 , 2 , 0 )) {
1445+ *platformVersion = " Server 2012" ;
1446+ } else {
1447+ *platformVersion = " Server 2008 (EOL)" ;
1448+ }
1449+
1450+ } else {
1451+ if (IsWindows10OrGreater ())
1452+ *platformVersion = " 10 or greater" ;
1453+ else if (IsWindows8Point1OrGreater ())
1454+ *platformVersion = " 8.1" ;
1455+ else if (IsWindows8OrGreater ())
1456+ *platformVersion = " 8" ;
1457+ else if (IsWindows7SP1OrGreater ())
1458+ *platformVersion = " 7 SP1 (EOL)" ;
1459+ else if (IsWindows7OrGreater ())
1460+ *platformVersion = " 7 (EOL)" ;
1461+ else
1462+ *platformVersion = " Vista (EOL)" ;
1463+ }
14461464 }
14471465
14481466 return true ;
0 commit comments