4

WinRT を使用すると、現在の OS が次の状態であるかどうかを判断できます。

  1. WindowsRT
  2. Windows 8 コア
  3. ウィンドウズ 8 プロ
  4. ウィンドウズ 8 エント

出来ますか?

質問 (http://stackoverflow.com/questions/10125324/get-os-version-in-winrt-metro-app-c-sharp) は重複しているように見えますが、リリース前の質問です。API の多くは、リリース全体で変更されました。その質問に対する答えは、それは不可能だというものでした。それはまだ本当ですか?確かにそうではありません。

4

4 に答える 4

1

それができるとしても、それは簡単ではなく、実行中のシステムについて取得できるデータから推測する必要があります。残念ながら、ドキュメントはこれについて非常に不明確です。たとえば、GetNativeSystemInfo 関数は Metro スタイル アプリで使用できます。 このリストを参照してください

ただし、GetNativeSystemInfo のドキュメントは、Metro スタイル アプリのリストにないいくつかの API を使用する OS バージョンを取得する方法の例にリンクしていますが、例はまだ Metro ドキュメントの下にあります。また、GetNativeSystemInfo からの応答が ARM プロセッサ上でどうなるかも不明です。

肝心なのは、これは悪いアプローチであり、コードの脆弱性を引き起こす可能性があるということです。私のアドバイスは、これをしようとしないことです。

于 2012-09-21T16:59:38.367 に答える
0

デバイス API を使用して HAL などの低レベルのシステム コンポーネントのドライバー バージョン番号を取得することで、OS のバージョン番号が正しくない可能性がありますが、取得できます。

http://attackpattern.com/2013/03/device-information-in-windows-8-store-apps/には、より多くの情報とサンプルコードがあります(開示、その投稿とコードを書きました)

于 2013-04-03T16:01:29.900 に答える
-1

これを見てください:

http://msdn.microsoft.com/en-us/library/windows/apps/windows.applicationmodel.packageid.architecture.aspx

var architecture = packageId.architecture;


var package = Windows.ApplicationModel.Package.current;
var packageId = package.id;
var version = packageId.version;

var output = [ "Name: \"" + packageId.name + "\"",
           "Version: " + version.major + "." + version.minor + "." 
                       + version.build + "." + version.revision,
           "Architecture: " + packageId.architecture,
           "ResourceId: \"" + packageId.resourceId + "\"",
           "Publisher: \"" + packageId.publisher + "\"",
           "PublisherId: \"" + packageId.publisherId + "\"",
           "FullName: \"" + packageId.fullName + "\"",
           "FamilyName: \"" + packageId.familyName + "\"",
           "IsFramework: " + package.isFramework ];
于 2012-09-21T17:11:13.503 に答える