【发布时间】:2016-09-28 10:00:41
【问题描述】:
我正在尝试获取执行我的软件的计算机的体系结构,到目前为止它在 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 总是返回“处理器是 32 位”,所以我猜这些环境变量在 Windows 之外是未使用的。我已经用谷歌搜索了几天,但找不到任何具体的东西。关于如何实现这一目标的任何想法?无论执行它的计算机是 32 位还是 64 位,我都需要加载不同的资产,因此这项检查非常重要。
我在 .NET 2.0 下,无法使用 Environment.Is64BitOperatingSystem 或 Environment.Is64BitProcess,因为这是 .NET 4.0 的功能。
提前致谢。
【问题讨论】:
-
Environment.Is64BitOperatingSystem或Environment.Is64BitProcess是否适合您? -
不,抱歉,我应该澄清一下。我在 .NET 2.0 下,这是 .NET 4.0 的功能。不过还是谢谢你:)
-
Mac 已经很久没有 32 位处理器了,你可以看到here。
-
@TheDarkKnight 我知道,但由于出版商的要求,我仍然需要支持他们。
-
this thread 有帮助吗?
标签: c# linux macos mono .net-2.0