70

アプリケーション(Visual Studio 2008で任意のCPUとしてコンパイルされている)が32ビットまたは64ビットのアプリケーションとして実行されているかどうかを確認するにはどうすればよいですか?

4

5 に答える 5

160

.NET 4.0を使用している場合、それは現在のプロセスのワンライナーです。

Environment.Is64BitProcess

参照:Environment.Is64BitProcessプロパティ(MSDN)

于 2010-08-11T18:25:33.047 に答える
71
if (IntPtr.Size == 8) 
{
    // 64 bit machine
} 
else if (IntPtr.Size == 4) 
{
    // 32 bit machine
}
于 2008-12-29T13:09:51.077 に答える
5

Microsoft All-In-One Code Framework からのこのコード サンプルは、あなたの質問に答えることができます。

C# でプラットフォームを実行しているプロセスを検出する (CSPlatformDetector)

CSPlatformDetector コード サンプルは、プラットフォーム検出に関連する次のタスクを示しています。

  1. 現在のオペレーティング システムの名前を検出します。 (例: "Microsoft Windows 7 Enterprise")
  2. 現在のオペレーティング システムのバージョンを検出します。 (例: "Microsoft Windows NT 6.1.7600.0")
  3. 現在のオペレーティング システムが 64 ビット オペレーティング システムであるかどうかを確認します。
  4. 現在のプロセスが 64 ビット プロセスかどうかを判断します。
  5. システムで実行されている任意のプロセスが 64 ビットかどうかを判断します。

現在実行中のプロセスが 64 ビット プロセスかどうかを判断するだけの場合は、.NET Framework 4 で新しく追加されたEnvironment.Is64BitProcessプロパティを使用できます。

また、システムで実行されている任意のアプリケーションが 64 ビット プロセスであるかどうかを検出する場合は、OS のビット数を特定する必要があります。64 ビットの場合はIsWow64Process()、ターゲット プロセス ハンドルを指定して呼び出します。

static bool Is64BitProcess(IntPtr hProcess)
{
    bool flag = false;

    if (Environment.Is64BitOperatingSystem)
    {
        // On 64-bit OS, if a process is not running under Wow64 mode, 
        // the process must be a 64-bit process.
        flag = !(NativeMethods.IsWow64Process(hProcess, out flag) && flag);
    }

    return flag;
}
于 2011-09-04T02:47:40.857 に答える
5

このトリックを行うMartijn Bovenのコードを見つけました。

public static bool Is64BitMode() {
    return System.Runtime.InteropServices.Marshal.SizeOf(typeof(IntPtr)) == 8;
}
于 2008-11-05T18:09:05.593 に答える