【问题标题】:Detecting if CPU is 64bit in Universal App (Windows)在通用应用程序(Windows)中检测 CPU 是否为 64 位
【发布时间】:2015-06-28 14:32:35
【问题描述】:

我有一个使用 PlayReady DRM 保护视频的通用应用。 PlayReady 的问题在于,它只有在应用程序构建架构与 CPU 架构匹配时才有效(例如:ARM 构建在 ARM 上,x64 在 64 位 CPU 上,x86 在 32 位 CPU 上)。这是设计使然(出于某种原因)。

所以问题是,如果用户拥有 64 位 CPU 并运行 32 位操作系统。在这种情况下,他从商店获得了 x86 版本(因为 32 位操作系统),但由于 64 位 CPI 与 X86 版本不匹配,PlayReady 将无法工作。在这种情况下,我想显示一条消息(而不仅仅是无法播放视频)。

我可以轻松检测 x86 构建(通过添加条件符号),但是如何检测 CPU 是否为 64 位?完整的 .NET 中没有像 System.Environment.Is64BitOperatingSystem 这样的东西。

【问题讨论】:

  • stackoverflow.com/questions/767613/… 查看使用 P/Invoke 获取处理器架构的答案
  • 我怀疑这是一个真正的问题,它只会在您的机器上出错。从商店下载应用程序的人会自动获得相应的版本。
  • @HansPassant 不。想象一下,您有一台配备 64 位 Atom 和 32 位 Windows 8.1 的平板电脑。商店会给你一个 X86 内置的,PlayReady 不适合你。
  • 嗯,不,Windows 8.1 32bit 没有 64bit 版本的 PlayReady。

标签: c# xaml windows-8 windows-phone-8.1 win-universal-app


【解决方案1】:

您可以在 Windows 应用商店应用程序中 P/Invoke Win32 的 GetNativeSystemInfo(有关 P/Invoke 签名 here 的更多信息);它返回一个包含处理器架构的结构。
我找不到任何关于它在 x86 Windows on x64 机器场景中返回的信息,而且我手头没有这样的机器来测试它,但值得一试。

【讨论】:

  • 这没有提供问题的答案。要批评或要求作者澄清,请在其帖子下方发表评论。
  • @dotctor:我编辑了帖子以使答案更加明确。
猜你喜欢
  • 1970-01-01
  • 2023-04-02
  • 2010-12-22
  • 1970-01-01
  • 1970-01-01
  • 2010-12-11
  • 2015-09-15
  • 1970-01-01
  • 2013-12-05
相关资源
最近更新 更多