1

是否有可能在运行时询问 Windows Store 应用程序(为 ARM 和 x86/64 编译)当前是否在 ARM 设备上执行,或者更具体地在 Microsoft Surface 平板电脑上从 c# 中执行,或者是否有必要编译两个版本同一个应用程序在不同平台上表现不同?

4

2 回答 2

3

这可以通过以下代码完成(根据this SO post):-

[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
}

这确实通过了 WACK 测试,测试我不会指望它永远存在。认真思考为什么需要这些信息(是只是为了统计,还是要改变应用程序的行为,如果是,为什么!?)

于 2013-01-09T09:32:36.163 回答
1
using Windows.ApplicationModel;

Package package = Package.Current;
PackageId packageId = package.Id;

String arch = String.Format("{0}", packageId.Architecture);

这将返回“X86”或“ARM”,具体取决于底层硬件。

于 2013-01-30T19:33:14.337 回答