如果你想使用代碼的方式來判斷一個32位的程序是否運行在一個64位的Windows系統上,你可以使用這個API: IsWow64Process。今天我們來仔細看看。
請不要輕易詳細網上其他人的一些說法,將64位處理器的列表硬編碼到你的程序中。
你可能會認為,在第一次修改64位處理器的硬編碼列表(例如,將 x64 添加到 ia64 時)之后,人們會吸取教訓。
但是,如何從 64 位進程中以編程的方式檢測是否在 64 位 Windows 上運行? 那其實簡單的。
為什么上面的代碼直接返回了TRUE?
因為,你的 64 位程序正在運行這一事實意味著,你正在 64 位 Windows 上運行! 如果它是 32 位機器,程序將無法運行。
這就好比,你的程序問了這樣一個問題,“電源打開了嗎?” 如果沒有電源,你的程序將無法提出問題。
當然了,如果你想要一個既可以編譯為 32 位程序又可以編譯為 64 位程序的源代碼庫,需要做的工作量很少。
如果你瘋狂到仍然在編寫 16 位 Windows 程序,我會為 16 位程序創建一個分支。
哈哈哈。
總結
此技法確實好用,我一直在用。雖然,目前TopomelBox只發布了32位版本,但每日構建我都會生成32位和64位版本。
所以,如果不幸地有一天,老大哥(Microsoft)決定完全廢棄掉32位版本的支持,我也能很快的切換到64位版本上去。
猿友們,要未雨綢繆。
最后
Raymond Chen的《The Old New Thing》是我非常喜歡的博客之一,里面有很多關于Windows的小知識,對于廣大Windows平臺開發者來說,確實十分有幫助。
本文來自:《How to detect programmatically whether you are running on 64-bit Windows》
責任編輯:Rex_08