C#とVisualStudio11ベータ版を使用してMetroスタイルアプリをプログラミングしています。次に、OSのOSバージョンを取得します。どうすればこれを入手できますか?
「通常の」アプリケーションでそれを行う方法を見つけました。そこで、属性OSVersionを持つEnvironment-Classを取得しますが、.NETCoreにはこの属性はありません
C#とVisualStudio11ベータ版を使用してMetroスタイルアプリをプログラミングしています。次に、OSのOSバージョンを取得します。どうすればこれを入手できますか?
「通常の」アプリケーションでそれを行う方法を見つけました。そこで、属性OSVersionを持つEnvironment-Classを取得しますが、.NETCoreにはこの属性はありません
デバイスAPIを使用して低レベルのシステムコンポーネントのドライバーバージョン番号を取得することにより、OSのバージョン番号を取得できますが、正しくない可能性があります。
受け入れられた答えは、機能をバージョン番号に結び付けるべきではないという点で正しいですが、分析など、それを使用する正当な理由があります-多くのユーザーがすでに新しいバージョンを使用していることを知っておくと便利です。それを利用するためにアプリのアップデートを検討しています。
https://github.com/AttackPattern/CSharpAnalytics/blob/master/Source/CSharpAnalytics/SystemInfo/WindowsStoreSystemInfo.csには、より多くの情報とサンプルコードがあります(開示、私はそのコードを書きました)
注:コードが更新され、カスタム/複数のHALなどを処理できるようになりました。
新しいアプリケーションの場合は、OSのバージョンではなく、特定の機能を確認する必要があります。
私が知る限り、メトロアプリケーションはwin 8でのみ利用可能であるため、OSのバージョンを確認する理由はありません。
編集:ストアアプリケーションは現在、複数のWindowsバージョンで利用できますが、OSバージョンではなく機能をテストすることをお勧めします。プロジェクトの作成時に、OSの最小バージョンがプロジェクトのビルドターゲットとして設定されます。
編集#2:アプリケーションのインストールベースでOSバージョンを追跡することに関心がある場合は、Windows8.1を対象とするアプリケーションから始めてApplicationInsightsをプロジェクトに統合できます。使い始める方法は次のとおりです。
http://azure.microsoft.com/en-us/documentation/articles/app-insights-windows-get-started/
実際、ユーザーエージェントフォーム(Windows NT 6.x)でWindowsバージョン文字列を取得するための簡単な回避策があります。
なぜそれをしたいのか疑問に思っている人へ:ユーザーのWindowsバージョンに関する統計を収集し、下位互換性について認識した決定を下すため。
public class OsVersion
{
public static Task<string> GetAsync()
{
var t = new TaskCompletionSource<string>();
var w = new WebView();
w.AllowedScriptNotifyUris = WebView.AnyScriptNotifyUri;
w.NavigateToString("<html />");
NotifyEventHandler h = null;
h = (s, e) =>
{
try
{
var match = Regex.Match(e.Value, @"Windows\s+NT\s+\d+(\.\d+)?");
if (match.Success)
t.SetResult(match.Value);
else
t.SetResult("Unknowm");
}
catch (Exception ex) { t.SetException(ex); }
finally { /* release */ w.ScriptNotify -= h; }
};
w.ScriptNotify += h;
w.InvokeScript("execScript", new[] { "window.external.notify(navigator.appVersion); " });
return t.Task;
}
他の投稿者の回答に基づくと、OSのバージョンをテストするためのAPIはありませんが、特定のタイプのバージョンを照会するためのAPIはあります。これは、現在のコードでWindowsの将来のリリースのバージョンを判断できない可能性があることを意味しますが、コードを更新し続けると、特定のタイプが使用可能かどうかに基づいてOSバージョンを判別できます。今のところ、現在のバージョンのWindows8を使用していると想定します。
また、試したことはありませんが、JavaScriptとの相互運用と「navigator.appVersion」の解析で取得できる可能性があります。