CLI: Improve Windows (Server) version detection

This commit is contained in:
Michael Friedrich 2020-01-08 14:36:42 +01:00 committed by Alexander A. Klimov
parent 6ef67432ef
commit 077e7ee7a5

View File

@ -1548,21 +1548,39 @@ static bool ReleaseHelper(String *platformName, String *platformVersion)
*platformName = "Windows"; *platformName = "Windows";
if (platformVersion) { if (platformVersion) {
*platformVersion = "Vista"; // https://stackoverflow.com/questions/53393150/c-how-to-detect-windows-server-2019
if (IsWindowsVistaSP1OrGreater()) // https://techthoughts.info/windows-version-numbers/
*platformVersion = "Vista SP1"; if (IsWindowsServer()) {
if (IsWindowsVistaSP2OrGreater()) // 2019 Server +
*platformVersion = "Vista SP2"; if (IsWindowsVersionOrGreater(10, 0, 1803)) {
if (IsWindows7OrGreater()) *platformVersion = "Server 2019 or greater";
*platformVersion = "7"; // 2016 Server
if (IsWindows7SP1OrGreater()) } else if (IsWindowsVersionOrGreater(10, 0, 1607)) {
*platformVersion = "7 SP1"; *platformVersion = "Server 2016";
if (IsWindows8OrGreater()) // 2012 R2
} else if (IsWindowsVersionOrGreater(6, 3, 0)) {
*platformVersion = "Server 2012 R2";
// 2012
} else if (IsWindowsVersionOrGreater(6, 2, 0)) {
*platformVersion = "Server 2012";
} else {
*platformVersion = "Server 2008 (EOL)";
}
} else {
if (IsWindows10OrGreater())
*platformVersion = "10 or greater";
else if (IsWindows8Point1OrGreater())
*platformVersion = "8.1";
else if (IsWindows8OrGreater())
*platformVersion = "8"; *platformVersion = "8";
if (IsWindows8Point1OrGreater()) else if (IsWindows7SP1OrGreater())
*platformVersion = "8.1 or greater"; *platformVersion = "7 SP1 (EOL)";
if (IsWindowsServer()) else if (IsWindows7OrGreater())
*platformVersion += " (Server)"; *platformVersion = "7 (EOL)";
else
*platformVersion = "Vista (EOL)";
}
} }
return true; return true;