static void GetOsVersion(str::Str<char>& s) { OSVERSIONINFOEX ver; ZeroMemory(&ver, sizeof(ver)); ver.dwOSVersionInfoSize = sizeof(ver); #pragma warning(push) #pragma warning(disable: 4996) // 'GetVersionEx': was declared deprecated // starting with Windows 8.1, GetVersionEx will report a wrong version number // unless the OS's GUID has been explicitly added to the compatibility manifest BOOL ok = GetVersionEx((OSVERSIONINFO*)&ver); #pragma warning(pop) if (!ok) return; const char *os = OsNameFromVer(ver); int servicePackMajor = ver.wServicePackMajor; int servicePackMinor = ver.wServicePackMinor; int buildNumber = ver.dwBuildNumber & 0xFFFF; #ifdef _WIN64 const char *arch = "64-bit"; #else const char *arch = IsRunningInWow64() ? "Wow64" : "32-bit"; #endif if (0 == servicePackMajor) s.AppendFmt("OS: Windows %s build %d %s\r\n", os, buildNumber, arch); else if (0 == servicePackMinor) s.AppendFmt("OS: Windows %s SP%d build %d %s\r\n", os, servicePackMajor, buildNumber, arch); else s.AppendFmt("OS: Windows %s %d.%d build %d %s\r\n", os, servicePackMajor, servicePackMinor, buildNumber, arch); }
static void GetOsVersion(str::Str<char>& s) { OSVERSIONINFOEX ver; ZeroMemory(&ver, sizeof(ver)); ver.dwOSVersionInfoSize = sizeof(ver); BOOL ok = GetVersionEx((OSVERSIONINFO*)&ver); if (!ok) return; char *os = OsNameFromVer(ver); int servicePackMajor = ver.wServicePackMajor; int servicePackMinor = ver.wServicePackMinor; int buildNumber = ver.dwBuildNumber & 0xFFFF; #ifdef _WIN64 char *arch = "64-bit"; #else char *arch = IsRunningInWow64() ? "Wow64" : "32-bit"; #endif if (0 == servicePackMajor) s.AppendFmt("OS: Windows %s build %d %s\r\n", os, buildNumber, arch); else if (0 == servicePackMinor) s.AppendFmt("OS: Windows %s SP%d build %d %s\r\n", os, servicePackMajor, buildNumber, arch); else s.AppendFmt("OS: Windows %s %d.%d build %d %s\r\n", os, servicePackMajor, servicePackMinor, buildNumber, arch); }