Ini adalah cara yang baik untuk menentukan OS Arsitektur?

Sejak kelas WMI Win32_OperatingSystem hanya mencakup OSArchitecture di Windows Vista, aku cepat-cepat menulis sebuah metode yang menggunakan registri untuk mencoba dan menentukan apakah atau tidak sistem saat ini adalah 32 atau 64 bit sistem.

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;
    }
}

It's bekerja cukup baik bagi kami sejauh ini, tapi aku'm tidak yakin berapa banyak aku seperti melihat melalui registry. Apakah ini cukup standar praktek atau ada metode yang lebih baik?

Edit: Wow, kode yang terlihat jauh lebih cantik di preview. I'll mempertimbangkan menghubungkan ke pastebin atau sesuatu, waktu berikutnya.

Larutan

Lihatlah Raymond Chen solusi:

Cara mendeteksi pemrograman apakah anda berjalan pada Windows 64-bit

dan berikut's PINVOKE untuk .NET:

IsWow64Process (kernel32)

Update: I'd mengambil masalah dengan memeriksa 'x86'. Yang's untuk mengatakan apa yang intel's atau AMD's next 32 bit prosesor dapat ditunjuk sebagai. Probabilitas yang rendah tapi itu adalah risiko. Anda harus meminta OS untuk menentukan ini melalui benar API's, bukan dengan menanyakan apa yang bisa menjadi sebuah versi OS/platform nilai tertentu yang dapat dianggap buram ke dunia luar. Tanyakan pada diri sendiri pertanyaan-pertanyaan, 1 - adalah entri registri yang bersangkutan didokumentasikan oleh MS, 2 - Jika itu adalah apa yang mereka berikan daftar definitif dari kemungkinan nilai-nilai yang dijamin untuk mengizinkan pengembang untuk membuat keputusan antara apakah anda menjalankan 32-bit atau 64 bit. Jika jawabannya tidak, maka panggilan API's, ya itu's a tetapi lebih panjang lebar tetapi didokumentasikan dan definitif.

Komentar (0)

cara termudah untuk menguji 64-bit di bawah .NET adalah untuk memeriksa nilai IntPtr.Ukuran.

Saya percaya nilai IntPtr.Ukuran 4 untuk 32bit aplikasi yang's berjalan di bawah WOW, isn't itu?

Edit: @Edit: Ya. :)

Komentar (0)

Melihat ke registry yang benar-benar valid, sehingga anda dapat yakin bahwa pengguna aplikasi akan selalu memiliki akses ke apa yang anda butuhkan.

Komentar (0)

Cara termudah untuk menguji 64-bit di bawah .NET adalah untuk memeriksa nilai IntPtr.Ukuran.

EDIT: Doh! Ini akan memberitahu anda apakah atau tidak proses saat ini adalah 64-bit, bukan OS secara keseluruhan. Maaf!

Komentar (0)