アプリケーションが32ビットアプリケーションとして実行されているか、64ビットアプリケーションとして実行されているかを確認するにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/266082

  •  06-07-2019
  •  | 
  •  

質問

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

役に立ちましたか?

解決

if (IntPtr.Size == 8) 
{
    // 64 bit machine
} 
else if (IntPtr.Size == 4) 
{
    // 32 bit machine
}

他のヒント

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

Environment.Is64BitProcess

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

Martijn Boven からこのコードを見つけました。

public static bool Is64BitMode() {
    return System.Runtime.InteropServices.Marshal.SizeOf(typeof(IntPtr)) == 8;
}

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

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

  

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

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

現在実行中のプロセスが64ビットであるかどうかを判断する場合 プロセスでは、 Environment.Is64BitProcess プロパティを使用できます。 .NETの新機能 フレームワーク4。

また、システム上で実行されている任意のアプリケーションかどうかを検出したい場合 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;
}

.Net Standardでは、 System.Runtime.InteropServices.RuntimeInformation.OSArchitecture

を使用できます
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top