这是一个与Get OS-Version in WinRT Metro App C#相关但不重复的问题。
是否有任何选项可以从Metro应用程序中检测系统上是否有可用的桌面功能?我知道不支持检测操作系统版本,这是可以的。
但是我的metro应用程序需要知道它正在运行的系统上是否有可用的桌面。
By Desktop我指的是可扩展的桌面 - 桌面,可以安装第三方桌面应用程序。我们知道基于ARM的单元也将具有桌面,但仅限于Microsoft内置程序。
我是否可以区分我的Metro应用程序是否在基于ARM的平板电脑上运行,该平板电脑具有不可扩展的桌面,而在具有可扩展桌面的所有其他(基于英特尔)设备上运行?
答案 0 :(得分:3)
经过一些更广泛的搜索后,我找到了GetNativeSystemInfo方法。提示立即在SO网站上 - 这question。 Windows应用程序似乎完全支持这种方法 - 尽管使用了pinvoke,但App Cert Kit测试运行顺利。
我最终得到了以下代码:
[DllImport("kernel32.dll")]
internal static extern void GetNativeSystemInfo(ref SystemInfo lpSystemInfo);
internal static bool IsArmBased()
{
var sysInfo = new SystemInfo();
GetNativeSystemInfo(ref sysInfo);
return sysInfo.wProcessorArchitecture == ProcessorArchitectureArm; //ushort 5
}
这似乎是我正在寻找的解决方案。如果没有,请告诉我,或让我知道与这种方法有关的任何问题。谢谢。
答案 1 :(得分:1)
如果这是HTML,您可以使用window.cpuClass
来获取它是ARM,x86还是amd64。
非动态版本是使用特定于目标的体系结构而不是AnyCPU,然后使用#ifdefs的flavor来在构建时对其进行硬编码。但是,您必须向商店提交3个包裹。
答案 2 :(得分:0)
使用try {} catch(){}访问这些库,如果出现任何问题,请假设ARM版本。