Windows 10 と Windows 8.1 を判定する
動作しているOSのバージョンを取得して判定する必要があり、 Environment.OSVersion を用いて Major と Minorで判定するようにサンプルコードを動作させてみました。
しかし、Windows 10 でも Windows 8.1 でも Major が 6 のまま。
Windows 10 では majorは 10 のはず...。
サンプル
static void Main(string[] args) { var os = Environment.OSVersion; Console.WriteLine("Version Information:"); Console.WriteLine(" Major: {0}", os.Version.Major); Console.WriteLine(" Minor: {0}", os.Version.Minor); }
解決策
- Visual Studio 2015 にて、マニフェストファイル(app.manifest) を追加。
- Windows 10 の部分のコメントを外してリビルド。
過去の互換性を保つために、OSVersionはWindows8のバージョンを返す仕様のようです。
マニフェストファイルでサポートOSを明示することで回避できます。
<compatibility xmlns="urn:schemas-microsoft-com:compatibility.v1"> <application> <!-- このアプリケーションがテストされ、協働するようテストされた Windows バージョンの 一覧。適切な要素をコメント解除すると、最も互換性のある環境を Windows が 自動的に選択します。--> <!-- Windows Vista --> <!--<supportedOS Id="{e2011457-1546-43c5-a5fe-008deee3d3f0}" />--> <!-- Windows 7 --> <!--<supportedOS Id="{35138b9a-5d96-4fbd-8e2d-a2440225f93a}" />--> <!-- Windows 8 --> <!--<supportedOS Id="{4a2f28e3-53b9-4441-ba9c-d69d4a4a6e38}" />--> <!-- Windows 8.1 --> <!--<supportedOS Id="{1f676c76-80e1-4239-95bb-83d0f6d0da78}" />--> <!-- Windows 10 --> <supportedOS Id="{8e0f7a12-bfb3-4fe8-b9a5-48fd50a15a9a}" /> </application> </compatibility>
実行結果
- Windows 10 = Major 10 が取得できました
Version Information: Major: 10 Minor: 0
参考
- 作者: arton
- 出版社/メーカー: 翔泳社
- 発売日: 2016/06/09
- メディア: Kindle版
- この商品を含むブログを見る