4

使用 WinRT 可以确定当前操作系统是否为:

  1. 视窗
  2. 视窗 8 核心
  3. 视窗 8 专业版
  4. 视窗 8 耳鼻喉科

是否可以?

请注意,问题(http://stackoverflow.com/questions/10125324/get-os-version-in-winrt-metro-app-c-sharp)似乎是重复的,但它是一个预发布问题。在整个版本中,大部分 API 都发生了变化。这个问题的答案是不可能的。这仍然是真的吗?肯定不是。

4

4 回答 4

1

如果可以做到,那就不容易了,必须从您可以获得的有关正在运行的系统的数据中推断出来。不幸的是,文档对此非常不清楚。例如,在Metro 风格应用程序下允许 使用GetNativeSystemInfo 函数。请参阅此列表

但是,GetNativeSystemInfo 的文档链接到一个示例,该示例说明如何获取使用多个 API 的操作系统版本,这些 API不在Metro 风格应用程序列表中,但该示例仍在 Metro 文档中。还不清楚GetNativeSystemInfo在 ARM 处理器上的响应是什么。

最重要的是,这是一种不好的方法,并且必然会导致代码的脆弱性。我的建议是避免尝试这样做。

于 2012-09-21T16:59:38.367 回答
0

您可以通过使用设备 API 获取低级系统组件(如 HAL)的驱动程序版本号来获取操作系统版本号,但可能存在不正确的风险。

http://attackpattern.com/2013/03/device-information-in-windows-8-store-apps/有更多信息和示例代码(披露,我写了那个帖子和代码)

于 2013-04-03T16:01:29.900 回答
0

是的,使用 webview 似乎是获取正在运行的处理器的可靠且非常快速的方法。确定赞成与否,企业。不,我找不到办法。

但是,如果您对如何确定处理器感兴趣并从那里开始呢?在这里查看我的答案:https ://stackoverflow.com/a/16996176/265706

于 2013-06-08T04:56:04.007 回答
-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 回答