Skip to content

Commit ff135b6

Browse files
author
Michael Friedrich
committed
CLI: Improve Windows (Server) version detection
1 parent 387c2c8 commit ff135b6

File tree

1 file changed

+33
-15
lines changed

1 file changed

+33
-15
lines changed

lib/base/utility.cpp

Lines changed: 33 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)