检查 Linux 和 Mac 的架构

Check architecture for Linux and Mac

我正在尝试获取执行我的软件的计算机架构,到目前为止它在 Windows 上运行良好,但在 Linux 和 OSX 上失败。让我展示一下我当前的代码:

//--Check processor architecture--
string strProcArchi = System.Environment.GetEnvironmentVariable("PROCESSOR_ARCHITECTURE");
string strProcArchiBis = System.Environment.GetEnvironmentVariable("PROCESSOR_ARCHITEW6432");

if((strProcArchi != null && strProcArchi.IndexOf("64") > 0) || (strProcArchiBis != null && strProcArchiBis.IndexOf("64") > 0))
{
    Console.WriteLine("Processor is 64-bit");
}
else
{
    Console.WriteLine("Processor is 32-bit");
}
//------

Linux 和 Mac 总是 return "Processor is 32-bit",所以我猜这些环境变量在 Windows 之外没有被使用。我已经用谷歌搜索了几天,但找不到任何具体的东西。关于如何实现这一目标的任何想法?无论执行它的计算机是 32 位还是 64 位,我都需要加载不同的资产,所以这个检查绝对重要。

我使用的是 .NET 2.0,我无法使用 Environment.Is64BitOperatingSystemEnvironment.Is64BitProcess,因为这是 .NET 4.0 的功能。

提前致谢。

要检测 .NET 运行时进程(在您的情况下为单进程)的位数,您可以检查 IntPtr.Size == 8 并检测处理器的位数,您可以解析 sysctl hw.cpu64bit_capable 命令的输出 OSX 和 cat /proc/cpuinfo | grep "flags" | grep " lm " 命令在 Linux.

上的输出