检查 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.Is64BitOperatingSystem
或 Environment.Is64BitProcess
,因为这是 .NET 4.0 的功能。
提前致谢。
要检测 .NET 运行时进程(在您的情况下为单进程)的位数,您可以检查 IntPtr.Size == 8
并检测处理器的位数,您可以解析 sysctl hw.cpu64bit_capable
命令的输出 OSX 和 cat /proc/cpuinfo | grep "flags" | grep " lm "
命令在 Linux.
上的输出
我正在尝试获取执行我的软件的计算机架构,到目前为止它在 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.Is64BitOperatingSystem
或 Environment.Is64BitProcess
,因为这是 .NET 4.0 的功能。
提前致谢。
要检测 .NET 运行时进程(在您的情况下为单进程)的位数,您可以检查 IntPtr.Size == 8
并检测处理器的位数,您可以解析 sysctl hw.cpu64bit_capable
命令的输出 OSX 和 cat /proc/cpuinfo | grep "flags" | grep " lm "
命令在 Linux.