C#:64位操作系统是跨平台(windows、unix、mac)的Net2.0

C#:64位操作系统是跨平台(windows、unix、mac)的Net2.0,c#,operating-system,cross-platform,C#,Operating System,Cross Platform,我想通过C#,使用NET2.0框架,确定我的操作系统是32位还是64位 我无法使用Environment.is64位OperatingSystem,因为它仅在net4及更高版本上有效 Y无法使用本机dll windows函数或注册表属性,因为这仅对windows有效 有没有办法在unix和mac中检查这一点?最后,这对Linux(unix和mac)有效: 静态字符串GetLinuxArchitectureType() { Mono.Unix.Native.Utsname结果; int res=M

我想通过C#,使用NET2.0框架,确定我的操作系统是32位还是64位

我无法使用Environment.is64位OperatingSystem,因为它仅在net4及更高版本上有效

Y无法使用本机dll windows函数或注册表属性,因为这仅对windows有效


有没有办法在unix和mac中检查这一点?

最后,这对Linux(unix和mac)有效:

静态字符串GetLinuxArchitectureType()
{
Mono.Unix.Native.Utsname结果;
int res=Mono.Unix.Native.Syscall.uname(输出结果);
如果(res<0)
返回“不适用”;
返回结果.machine;
}

您必须根据运行时环境决定如何进行检查。这意味着您将需要所有三种实现。是的,我有windows的代码,但我找不到MAC OS X和windows的任何代码Unix@Yuval我会看的。是的,包括Windows XP。你能检查一下那个链接吗?[如何用.NET检测Windows 64位平台?][1][1]:我说我已经有了Windows的代码,很容易找到。我首先检查操作系统类型,并在unix和MAC上使用此函数来检查您使用的操作系统类型,如果是
PlatformID.unix
您将分支到此函数?好吧,我在case>PlatformID.WinCE(unix、MAC和xBox,最后一个对我来说没有意义)
    static string GetLinuxArchitectureType()
    {
        Mono.Unix.Native.Utsname result;
        int res = Mono.Unix.Native.Syscall.uname(out result);

        if (res < 0)
            return "N/A";

        return result.machine;
    }