【问题标题】:In WinRT is it possible to ask for the current OS version?在 WinRT 中是否可以询问当前的操作系统版本?
【发布时间】:2012-09-14 01:26:27
【问题描述】:

使用 WinRT 可以判断当前操作系统是否为:

  1. Windows RT
  2. Windows 8 核心版
  3. Windows 8 专业版
  4. Windows 8 系统

有可能吗?

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

【问题讨论】:

标签: windows-8


【解决方案1】:

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

但是,GetNativeSystemInfo 的文档链接到 an example,了解如何获取使用多个 API 的操作系统版本,这些 API 不在 Metro 风格应用列表中,但示例仍在地铁文档。还不清楚response from GetNativeSystemInfo 将在 ARM 处理器上是什么。

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

【讨论】:

  • 我同意,但仍然想知道 - 我敢打赌有办法
【解决方案2】:

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

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

【讨论】:

    【解决方案3】:

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

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

    【讨论】:

      【解决方案4】:

      看看这个:

      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 ];
      

      【讨论】:

      • 这不是告诉你当前的包,而不是平台吗?
      • 是的,它是关于当前包的......主要是“中性”而不是 ARM 或特定的东西......
      猜你喜欢
      • 1970-01-01
      • 2023-03-12
      • 2016-10-20
      • 1970-01-01
      • 2012-03-07
      • 1970-01-01
      • 2010-12-06
      • 2017-04-02
      • 2012-02-05
      相关资源
      最近更新 更多