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.
Lihatlah Raymond Chen solusi:
Cara mendeteksi pemrograman apakah anda berjalan pada Windows 64-bit
dan berikut's PINVOKE untuk .NET:
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.
Melihat ke registry yang benar-benar valid, sehingga anda dapat yakin bahwa pengguna aplikasi akan selalu memiliki akses ke apa yang anda butuhkan.