Windows8.1のバージョン情報

[戻る]
AR 2013/09/13(金) 11:07:13
 お世話になっております。
 先日、MSDNで公開されていたのでインストールしてみました。

 自作のアプリで、エクスプローラーの詳細表示で表示可能な項目数、スタートメニュー
もどきが追加されたことによる仮想フォルダ制御などのOSの差を吸収しようとしました。
 で、GetVersionEx()でOSのバージョン番号を取得してOSごとに異なる挙動を吸収しよう
としたのですが、今回はこのバージョン番号の判定方法が使えないようです。
 GetVersionEx()で値を取得するとWindow8.1ではなく、Windows8と同じ情報を返してき
ています。

OSのバージョン情報で表示されている情報
Ver.6.3 ビルド番号 9600
GetVersionEx()で取得できる値
Ver.6.2 ビルド番号 9200

 Shell32.dllのバージョン情報を参照すれば「Ver.,6.3.9600.16384
(winblue_rtm.130821-1623)」こんな文字列が返ってくるので「6.3」やビルド番号は取得
可能ですが、何が正しいと信じて良いのか分からなくなってしまいました。
 多分、インストーラーを騙すための措置だと思いますが、他に正確なバージョン番号を
取得する方法はありませんでしょうか?

 開発環境はVS2012で、OSはWindows8.1です。

仲澤@失業者 2013/09/13(金) 12:25:37
本物が出てくるまではどうなるかわからないとは思いますが、
ひとつ疑問なのは、

OSVERSIONINFOEX verEx;

を使っても取れなかったということでしょうか。
取得できるという情報もあったようですが。

AR 2013/09/13(金) 17:12:27
さっそくの回答ありがとうございます。

一応、完成版というかRTMのWindows8.1の話です。

Shell32.dllの方にはrtmと入ってますし。



>OSVERSIONINFOEX verEx;

>を使っても取れなかったということでしょうか。



NT4の時代から使ってたソースを使いまわしていたので、OSVERSIONINFOの方を使っていま
した。

でも、OSVERSIONINFOを使ってるからといって、嘘情報を返して良いという話にはならな
いような気がします。

Windows8まで正しい値を返していたわけですし。





質問しておいてなんですが、ちょっと体調崩しちゃったので復調し次第OSVERSIONINFOEX
の方の検証をしてみます。

ありがとうございました。

ロマ 2013/09/16(月) 14:14:19
http://8thway.blogspot.jp/2013/07/per-monitor-dpi.html
ここの後半とリンク先
http://msdn.microsoft.com/en-us/library/windows/desktop/dn302074.aspx
にいろいろ書いてあるようです。

AR 2013/09/17(火) 10:02:41
[[解決]]
to仲澤@失業者さん

 とりあえず検証結果の報告です。
 OSVERSIONINFOとOSVERSIONINFOEXの違いは無く、同じようにVer.6.2 Build:9200を返し
てきました。

toロマさん

 情報の提供ありがとうございます。
 マニフェスト定義すれば、GetVersionEx()でも適切な値を返してくるかもしれませんね。
 将来、OSごとのGUID文字列がいつ提供されるのか、いささか不安に感じますがこちらで
対処してみようと思います。

 後半のリンクは、こういう事情があったのかと背景は理解しましたが、対応方法の正当
性は疑問ですね。
 Vistaのサービスパックが何個出るとかMS社ですら予測できなかったでしょうに・・・
今後出てくるであろうAPI名をどうするつもりなのか注視したいと思います。
 あと新しいAPIはVS2013にて対応とあるので、とりあえず今回は使用できない手段と考
えておきます。

 とりあえず、道筋が見えたので解決済みにしておきます。
 ありがとうございました。

古いスレッドには追加発言できません。