C#とVisual Studio11ベータ版を使用してMetroStyleアプリをプログラミングしています。ここで、OSのOSバージョンを取得したいと思います。どうすればこれを入手できますか?
「通常の」アプリケーションでそれを行う方法を見つけました。そこで、属性OSVersionを持つEnvironment-Classを取得しますが、.NETCoreにはこの属性はありません
新しいアプリケーションの場合は、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/
デバイスAPIを使用して低レベルのシステムコンポーネントのドライバーバージョン番号を取得することにより、正しくない可能性があるというリスクを伴うOSバージョン番号を取得できます。
受け入れられた答えは、機能をバージョン番号に結び付けるべきではないという点で正しいですが、分析など、それを使用する正当な理由があります-多くのユーザーがすでに新しいバージョンを使用していることを知っておくと便利です。それを利用するためにアプリのアップデートを検討しています。
https://github.com/AttackPattern/CSharpAnalytics/blob/master/Source/CSharpAnalytics/SystemInfo/WindowsStoreSystemInfo.cs より多くの情報とサンプルコードがあります(開示、私はそのコードを書きました)
注:コードが更新され、カスタム/複数のHALなどを処理するようになりました。
実際、ユーザーエージェントフォーム(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」を解析することで取得できる可能性があります。