Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在通用应用程序(Windows)中检测CPU是否为64位_C#_Xaml_Windows 8_Windows Phone 8.1_Win Universal App - Fatal编程技术网

C# 在通用应用程序(Windows)中检测CPU是否为64位

C# 在通用应用程序(Windows)中检测CPU是否为64位,c#,xaml,windows-8,windows-phone-8.1,win-universal-app,C#,Xaml,Windows 8,Windows Phone 8.1,Win Universal App,我有一个使用PlayReady DRM保护视频的通用应用程序。PlayReady的问题在于,只有当应用程序构建架构与CPU架构匹配时,它才能工作(例如:ARM上的ARM构建、64位CPU上的x64、32位CPU上的x86)。这是出于设计(出于某种原因) 因此,问题是,如果用户拥有64位CPU,运行32位操作系统。在本例中,他从应用商店获得x86版本(因为32位操作系统),但PlayReady无法工作,因为64位CPI与x86版本不匹配。在这种情况下,我希望显示一条消息(而不是仅仅无法播放视频)

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

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


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

您可以在Windows应用商店应用程序中对Win32进行p/调用(有关p/调用签名的更多信息);它返回一个包含处理器体系结构的结构。

我找不到关于x86 Windows on x64机器场景中返回的内容的任何信息,我手头上也没有这样的机器来测试它,但值得一试。

查看关于使用p/Invoke获得处理器架构的答案我怀疑这是一个真正的问题,它只会在您的机器上出错。从商店下载应用程序的人会自动获得相应的版本。@HansPassant No。假设您有一台64位Atom和Windows 8.1 32位的平板电脑。商店将为您提供X86内置版本,PlayReady将不适用于您。嗯,不,Windows 8.1 32位版本没有64位版本的PlayReady。这并没有提供问题的答案。若要评论或要求作者澄清,请在他们的帖子下方留下评论。@dotctor:我编辑了这篇帖子以使答案更明确。