2011-11-11 18 views
3

可能性の重複:
How to detect Windows 64 bit platform with .net?32または64ビットマシン

マシンが64または32ビットである場合、私は、このコードtiのチェックを使用しています:

public static string GetOSBit() 
    { 
     bool is64bit = Is64Bit(); 
     if (is64bit) 
      return "64 bit"; 
     else 
      return "32 bit"; 
    } 

    [DllImport("kernel32.dll", SetLastError = true, CallingConvention = CallingConvention.Winapi)] 
    [return: MarshalAs(UnmanagedType.Bool)] 
    public static extern bool IsWow64Process([In] IntPtr hProcess, [Out] out bool lpSystemInfo); 

    public static bool Is64Bit() 
    { 
     bool retVal; 
     IsWow64Process(Process.GetCurrentProcess().Handle, out retVal); 
     return retVal; 
    } 

私は32ビットマシンを持っており、それは私のために大丈夫です。 「32ビット」を返します。私の友人は32ビットマシンも持っていますが、64ビットの仮想マシンをインストールしています。上記のコードは、仮想マシンでは「32ビット」を返しますが、64ビットです。 私はC#、.Net 2.0で働いています。

+0

APIが示唆するように、これはマシンではなくプロセスを表します。 – sehe

答えて

2

機能IsWow64Processは、指定されたプロセスがWOW64で実行されているかどうかを判断します。したがって、基本的には、64ビットOSで実行されている32ビットプロセスに対して呼び出された場合、trueを返します。

関連する問題