Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/337.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# 如何检测we';您是否在.NET中运行ARM64版本的Windows 10?_C#_.net_Arm64 - Fatal编程技术网

C# 如何检测we';您是否在.NET中运行ARM64版本的Windows 10?

C# 如何检测we';您是否在.NET中运行ARM64版本的Windows 10?,c#,.net,arm64,C#,.net,Arm64,我创建了一个C#.NET控制台应用程序,可以在Windows10x86、x64和ARM64中运行(通过模拟器层) 我想知道如何检测应用程序是否在这些平台上运行。我知道如何检测x86和x64,但如何检测应用程序是否在ARM64内部运行 这是运行在我的ARM64系统中的Visual Studio的快照。您可以看到它被检测为X86 您可以使用 System.Runtime.InteropServices.RuntimeInformation.ProcessArchitecture 然后将返回一个架构

我创建了一个C#.NET控制台应用程序,可以在Windows10x86、x64和ARM64中运行(通过模拟器层)

我想知道如何检测应用程序是否在这些平台上运行。我知道如何检测x86和x64,但如何检测应用程序是否在ARM64内部运行

这是运行在我的ARM64系统中的Visual Studio的快照。您可以看到它被检测为X86


您可以使用

System.Runtime.InteropServices.RuntimeInformation.ProcessArchitecture
然后将返回一个
架构
枚举:

确定,此代码工作:

public static class ArchitectureInfo
{
    public static bool IsArm64()
    {
        var handle = Process.GetCurrentProcess().Handle;
        IsWow64Process2(handle, out var processMachine, out var nativeMachine);

        return nativeMachine == 0xaa64;
    }

    [DllImport("kernel32.dll", SetLastError = true)]
    private static extern bool IsWow64Process2(
        IntPtr process, 
        out ushort processMachine, 
        out ushort nativeMachine
    );
}

(via)

检查此项-它是.net core/.net framework应用程序吗?如何发布它?它是一个标准的控制台应用程序(.NET Framework),我不会发布它。可能是带有二进制文件的.zip:)System.Runtime.InteropServices下的大量名称空间可以通过@JamieRees共享的链接访问。您可以找到有关您的开发领域的其他信息。我终于可以尝试您的解决方案了,这很让人困惑,因为System.Runtime.InteropServices.RuntimeInformation.ProcessArchitecture返回X86,即使在ARM64机器内运行。请,请看我在第一篇文章中添加的屏幕截图。@SuperJMN:这可能是因为该代码在windows仿真层上使用x86 dotnet运行时运行的吗?我猜,如果有一个enum写着“Arm64”,那么它一定是在某个地方使用的……你接受了这个答案,但是另一个问题的答案呢,你在这里使用了谁的代码?另外,这里的代码是错误的,因为它在调用
IsWow64Process2
时没有检查错误。