質問

以降、WMIのクラスWin32_OperatingSystemのみが含まれOSArchitecture Windows Vista、私はすぐに、文書を用いる方法、レジストリをうかどうかを判定する現在のシステムは32または64ビットのシステム。

private Boolean is64BitOperatingSystem()
{
    RegistryKey localEnvironment = Registry.LocalMachine.OpenSubKey("SYSTEM\\CurrentControlSet\\Control\\Session Manager\\Environment");
    String processorArchitecture = (String) localEnvironment.GetValue("PROCESSOR_ARCHITECTURE");

    if (processorArchitecture.Equals("x86")) {
        return false;
    }
    else {
        return true;
    }
}

このためていただき本当にありがとうございかなくなったかを見るようにした。これかの標準練習では、より良い方法は?

編集:なんと、そのコードを見に多く見のプレビューします。かを検討することになるだろうリンクをふやかす。

役に立ちましたか?

解決

しくはレイモンドChens解

どのように検出プログラムによる走64-bit Windows

この時点でPINVOKEます。純益:

IsWow64Process(kernel32)

更新: いう問題をチェック'x86'.誰が何と言ってもintelまたはAMDの32ビットプロセッサーを選定することができる。の確率は低いものです。問い合わせておいてくださいOSを決定する正しいAPIのなのか、という疑問に取り組むが、OSのバージョン/プラットフォームならではの価値判断される不透明である。自分自身に尋ねる質問に1を入力レジストリの関係を適切に文書化され、2-であればいいのかを明確に定義したものになるという保証は許可す開発者としてのに情報に基づいた意思決定の間でかいたりする32ビットまたは64ビット.答えがnoの場合は、そのAPIを呼び出し、ああでもあり冗長な文書化し、定.

他のヒント

ための最も簡単な方法は試験のための64ビット。ネットチェックの値IntPtr.サイズです。

この値IntPtr.サイズは4 32bitアプリの動なんですよね。

編集:@編集:そうですね。:)

ための最も簡単な方法は試験のための64ビット。ネットチェックの値IntPtr.サイズです。

編集:っ!このことを伝えるかどうかは現在のプロセスでは、64ビットは、OSとしてます。すいません!

のレジストリは完全に有効なので、できるだけ長くっていることをご確認くださいユーザのアプリケーションは常にアクセスで作られています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top