目次
HockeyAppのSDKでやっていたやり方。
HockeyAppSDKのソースを見ていたらあったやり方。
レジストリから取るのを試みて、ダメだったらEnvironmentの値を使う。
CurrentBuildはちゃんと違いが出ているみたい。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
/// <summary> /// Gets OS version. /// </summary> public string OSVersion { get { //as windows 8.1 lies to us to be 8 we try via registry try { using (RegistryKey registryKey = Registry.LocalMachine.OpenSubKey(@"Software\Microsoft\Windows NT\CurrentVersion")) { return (string)registryKey.GetValue("CurrentVersion") + "." + (string)registryKey.GetValue("CurrentBuild") + ".0"; } } catch (Exception e) { HockeyClient.Current.AsInternal().HandleInternalUnhandledException(e); } return Environment.OSVersion.Version.ToString() + " " + Environment.OSVersion.ServicePack; } } |
Environment.OSVersionでは、8以降だとちゃんと取得できない。
Environment.OSVersion プロパティ
MSDNによると、Environment.OSVersion プロパティでバージョンを取得して、バージョン判定に使用するのは推奨されていない。
Starting with Windows 8, the OSVersion property returns the same major and minor version numbers for all Windows platforms. Therefore, we do not recommend that you retrieve the value of this property to determine the operating system version.
Windows8以降は同じバージョンが返ってくるので、OSのバージョン判定の目的で使うのは、おすすめしないとのこと。
The OSVersion property reports the same version number (6.2.0.0) for both Windows 8 and Windows 8.1 and the same major and minor version number for Windows 10.
8以降はどれも6.2.0.0を返すらしい(確認していない)。
8以降もバージョンを取得するやり方は、検索すると出てきたが、マニフェストファイルを更新していけばできるらしい。
コメント