永遠のプログラマ☆

高齢者でもプログラマ(4x年)

Windows Server 2016 と2019 を区別 - GetVersionEx☆

こんにちは。

クルマのフルモデルチェンジ。

車検と重なるとかなりうれしい。

 

さて、Windows Server 2019使用開始。

2016 やっと慣れたと思ったら、

年寄りにはついていけません。

 

C++ で 2016 と 2019 どうやって区別するか。

GetVersionEx API の戻り値の解析で悩む。

 

C++ How to detect Windows Server 2019? - Stack Overflow

 

これを見ると、dwBuildNumber をチェックするしかないのかな。

 

// Windows 10
osvi.dwOSVersionInfoSize = 284
osvi.dwMajorVersion = 10
osvi.dwMinorVersion = 0
osvi.dwBuildNumber = 17134
osvi.dwPlatformId = 2
osvi.wSuiteMask = 256 // 0x100
osvi.wProductType = 1

// Windows Server 2016
osvi.dwOSVersionInfoSize = 284
osvi.dwMajorVersion = 10
osvi.dwMinorVersion = 0
osvi.dwBuildNumber = 14393
osvi.dwPlatformId = 2
osvi.wSuiteMask = 400
osvi.wProductType = 3

// Windows Server 2019
osvi.dwOSVersionInfoSize = 284
osvi.dwMajorVersion = 10
osvi.dwMinorVersion = 0
osvi.dwBuildNumber = 17763
osvi.dwPlatformId = 2
osvi.wSuiteMask = 400 // 0x190
osvi.wProductType = 3