C++、VBScriptでOSバージョンを取得するプログラムを開発していたが、
クライアント端末にWindows10が含まれることに既存ロジックへの調査を実施した。
結果、C++でOSバージョン(GetVersionEx関数)を取得するロジックに不備が発生した。
GetVersionEx関数をMSDNで調査したところ、Windows8以降サポートをしないようだ。
Windows10でGetVersionEx関数を実行すると6.2(Windows8の値)という結果だった。
期待値は10.0だった。
下記URLに詳細が記述されている。
https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms724451(v=vs.85).aspx
・OSバージョンについて
https://msdn.microsoft.com/en-us/library/ms724832(v=vs.85).aspx?tduid=(a1b7f744eb2d79c3ecc49da86e748d85)(256380)(2459594)(TnL5HPStwNw-4sBXUfjeKWq7DCpiwLPKMA)()
マニフェストファイルを生成し、Windows10を定義することにより問題が改善されるようだが、
サポートされないことからGetFileVersionInfo関数で代替えする方法を検討している。
・参考URL
https://togarasi.wordpress.com/2015/07/04/win10-os-%E3%81%AE%E3%83%90%E3%83%BC%E3%82%B8%E3%83%A7%E3%83%B3/
ちなみにVBScriptのOS情報の取得方法は下記だが、問題なく10.0XXXが取得できる。
Set objWMIService = GetObject(“winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2″)
Set colOperatingSystems = objWMIService.ExecQuery(“Select * from Win32_OperatingSystem”)