ホームページ > バックエンド開発 > C++ > プロセスが 32 ビットか 64 ビットかをプログラムで判断するにはどうすればよいですか?

プロセスが 32 ビットか 64 ビットかをプログラムで判断するにはどうすればよいですか?

Linda Hamilton
リリース: 2025-01-05 07:43:39
オリジナル
294 人が閲覧しました

How Can I Programmatically Determine if a Process is 32-bit or 64-bit?

プログラムによるプロセス ビット数の決定

アプリケーションは、多くの場合、システム上の他のプロセスと対話する必要があります。このような対話にとって重要な情報の 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;
ログイン後にコピー

このメソッドにはオペレーティング システムへのクエリが必要で、古いシステムでは使用できない場合があります。

WOW64 検出

32 ビット エミュレーション (WOW64) をサポートする Windows システムの場合、32 ビット プロセスが以下の環境で実行されているかどうかを確認する必要があります。エミュレーション環境。次のコードはこれを示しています。

bool isWin64Emulator = NativeMethods.IsWow64Process(process.Handle, out bool wow64Process);
ログイン後にコピー

これには、ネイティブ IsWow64Process 関数を呼び出して、プロセスが 64 ビット Windows で 32 ビット アプリケーションとして実行されているかどうかを判断する必要があります。

以上がプロセスが 32 ビットか 64 ビットかをプログラムで判断するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート