|
|
@@ -4879,11 +4879,8 @@ std::string SystemTools::GetOperatingSystemNameAndVersion()
|
|
|
OSVERSIONINFOEXA osvi;
|
|
|
BOOL bOsVersionInfoEx;
|
|
|
|
|
|
- // Try calling GetVersionEx using the OSVERSIONINFOEX structure.
|
|
|
- // If that fails, try using the OSVERSIONINFO structure.
|
|
|
-
|
|
|
- ZeroMemory(&osvi, sizeof(OSVERSIONINFOEXA));
|
|
|
- osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFOEXA);
|
|
|
+ ZeroMemory(&osvi, sizeof(osvi));
|
|
|
+ osvi.dwOSVersionInfoSize = sizeof(osvi);
|
|
|
|
|
|
#ifdef KWSYS_WINDOWS_DEPRECATED_GetVersionEx
|
|
|
# pragma warning (push)
|
|
|
@@ -4893,14 +4890,10 @@ std::string SystemTools::GetOperatingSystemNameAndVersion()
|
|
|
# pragma warning (disable:4996)
|
|
|
# endif
|
|
|
#endif
|
|
|
- bOsVersionInfoEx = GetVersionEx((OSVERSIONINFO *)&osvi);
|
|
|
+ bOsVersionInfoEx = GetVersionExA((OSVERSIONINFOA *)&osvi);
|
|
|
if (!bOsVersionInfoEx)
|
|
|
{
|
|
|
- osvi.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
|
|
|
- if (!GetVersionEx((OSVERSIONINFO *)&osvi))
|
|
|
- {
|
|
|
- return 0;
|
|
|
- }
|
|
|
+ return 0;
|
|
|
}
|
|
|
#ifdef KWSYS_WINDOWS_DEPRECATED_GetVersionEx
|
|
|
# pragma warning (pop)
|
|
|
@@ -4913,10 +4906,56 @@ std::string SystemTools::GetOperatingSystemNameAndVersion()
|
|
|
case VER_PLATFORM_WIN32_NT:
|
|
|
|
|
|
// Test for the specific product family.
|
|
|
+ if (osvi.dwMajorVersion == 10 && osvi.dwMinorVersion == 0)
|
|
|
+ {
|
|
|
+ if (osvi.wProductType == VER_NT_WORKSTATION)
|
|
|
+ {
|
|
|
+ res += "Microsoft Windows 10";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ res += "Microsoft Windows Server 2016 family";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 3)
|
|
|
+ {
|
|
|
+ if (osvi.wProductType == VER_NT_WORKSTATION)
|
|
|
+ {
|
|
|
+ res += "Microsoft Windows 8.1";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ res += "Microsoft Windows Server 2012 R2 family";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 2)
|
|
|
+ {
|
|
|
+ if (osvi.wProductType == VER_NT_WORKSTATION)
|
|
|
+ {
|
|
|
+ res += "Microsoft Windows 8";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ res += "Microsoft Windows Server 2012 family";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ if (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 1)
|
|
|
+ {
|
|
|
+ if (osvi.wProductType == VER_NT_WORKSTATION)
|
|
|
+ {
|
|
|
+ res += "Microsoft Windows 7";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ res += "Microsoft Windows Server 2008 R2 family";
|
|
|
+ }
|
|
|
+ }
|
|
|
|
|
|
if (osvi.dwMajorVersion == 6 && osvi.dwMinorVersion == 0)
|
|
|
{
|
|
|
-#if (_MSC_VER >= 1300)
|
|
|
if (osvi.wProductType == VER_NT_WORKSTATION)
|
|
|
{
|
|
|
res += "Microsoft Windows Vista";
|
|
|
@@ -4925,9 +4964,6 @@ std::string SystemTools::GetOperatingSystemNameAndVersion()
|
|
|
{
|
|
|
res += "Microsoft Windows Server 2008 family";
|
|
|
}
|
|
|
-#else
|
|
|
- res += "Microsoft Windows Vista or Windows Server 2008";
|
|
|
-#endif
|
|
|
}
|
|
|
|
|
|
if (osvi.dwMajorVersion == 5 && osvi.dwMinorVersion == 2)
|
|
|
@@ -4956,7 +4992,6 @@ std::string SystemTools::GetOperatingSystemNameAndVersion()
|
|
|
{
|
|
|
// Test for the workstation type.
|
|
|
|
|
|
-#if (_MSC_VER >= 1300)
|
|
|
if (osvi.wProductType == VER_NT_WORKSTATION)
|
|
|
{
|
|
|
if (osvi.dwMajorVersion == 4)
|
|
|
@@ -5028,7 +5063,6 @@ std::string SystemTools::GetOperatingSystemNameAndVersion()
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-#endif // Visual Studio 7 and up
|
|
|
}
|
|
|
|
|
|
// Test for specific product on Windows NT 4.0 SP5 and earlier
|