アプリケーションは、多くの場合、システム上の他のプロセスと対話する必要があります。このような対話にとって重要な情報の 1 つは、ターゲット プロセスが 32 ビット モードで実行されているか、64 ビット モードで実行されているかということです。この区別は、互換性、メモリ使用量、およびその他の要因に影響を与える可能性があります。
プログラムでビット数を決定するために、C# では次の簡単なメソッドが提供されています。
if (IntPtr.Size == 4) { // 32-bit } else if (IntPtr.Size == 8) { // 64-bit } else { // The future is now! }
このアプローチでは次のチェックが行われます。 IntPtr のサイズ。実行中のシステム上のポインターのサイズを示します。32 ビットの場合は 4 バイト、32 ビットの場合は 8 バイトです。 64 ビット。
名前または ID で特定のプロセスのビット数をクエリするには、より高度なアプローチが必要です。 Process クラスを使用すると、ターゲット プロセスに関する情報を取得できます。
Process process = Process.GetProcessById(processId); bool is32Bit = process.GetProcessBits() == ProcessBits.X32; bool is64Bit = process.GetProcessBits() == ProcessBits.X64;
このメソッドにはオペレーティング システムへのクエリが必要で、古いシステムでは使用できない場合があります。
32 ビット エミュレーション (WOW64) をサポートする Windows システムの場合、32 ビット プロセスが以下の環境で実行されているかどうかを確認する必要があります。エミュレーション環境。次のコードはこれを示しています。
bool isWin64Emulator = NativeMethods.IsWow64Process(process.Handle, out bool wow64Process);
これには、ネイティブ IsWow64Process 関数を呼び出して、プロセスが 64 ビット Windows で 32 ビット アプリケーションとして実行されているかどうかを判断する必要があります。
以上がプロセスが 32 ビットか 64 ビットかをプログラムで判断するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。