none
如何判別作業系統的是32還是64位元?

    問題

  • 我只知道有My.Computer.info.OS.......這條
    但只能抓出版號跟產品名稱

    沒辦法抓出是幾位元的產品

    因為很多工業用的IO CARD幾乎都只有提供32Bit的Driver
    為了避免64位元系統使用造成程式錯誤或者電腦當機

    想在一開始執行就加入判別式避開這個錯誤


    所以想請問各位大大如何判別如何判別作業系統的是32還是64位元呢?
    2010年1月29日 下午 04:36

解答

所有回覆

  • 試試看這個行不行
    Environment.OSVersion.Platform
    2010年1月29日 下午 05:30
  • 無論是用Windows 7 32Bit還是64Bit都是出現"2"

    這樣似乎沒辦法判別...

    2010年1月29日 下午 05:49
  • 這可能要用到 Win32 API
    Win32_OperatingSystem Class
    <!-- --> OSArchitecture

    有個不太正常但簡單一點的做法, 你判斷該電腦有沒有  Program Files (x86) 這個目錄就好了, 我記得X64的OS才會有這目錄.
    不過正規應該還是用Win32 API才是.

    補充: 在Windows目錄下有個SysWOW64也是64Bits OS特有的目錄

    MSDN 文件庫很重要
    問題本身越具體, 越容易得到大家的回應
    回應幫助你的人是一種禮貌, 良好的禮貌有助於激發大家對你問題回應的熱情
    2010年1月29日 下午 06:01
  • 2010年1月29日 下午 06:25
  • 判斷Program Files (x86)也是可行

    我已經忘記我x64系統建立起來一開始有沒有x86,還是後來裝x86的app才建立起來

    不過難保不會遇到整個系統都不裝x86的使用者(很難吧...)
    2010年1月29日 下午 06:28
  • 我剛想到一個問題, 你的程式是真的需要安裝驅動程式還是其實只是呼叫Win32 API ?
    如果只靠呼叫Win32 API的話, 把組態改為X86再建置就好了.
    因為有點弔詭的是, 如果是要安裝驅動程式, 32 bits Driver 在X64根本連安裝驅動程式都會失敗,
    根本還輪不到應用程式上場, 客戶就會發現它在X64不能用了.

    MSDN 文件庫很重要
    問題本身越具體, 越容易得到大家的回應
    回應幫助你的人是一種禮貌, 良好的禮貌有助於激發大家對你問題回應的熱情
    2010年1月29日 下午 07:52
  • 我剛想到一個問題, 你的程式是真的需要安裝驅動程式還是其實只是呼叫Win32 API ?
    如果只靠呼叫Win32 API的話, 把組態改為X86再建置就好了.
    因為有點弔詭的是, 如果是要安裝驅動程式, 32 bits Driver 在X64根本連安裝驅動程式都會失敗,
    根本還輪不到應用程式上場, 客戶就會發現它在X64不能用了.

    MSDN 文件庫很重要
    問題本身越具體, 越容易得到大家的回應
    回應幫助你的人是一種禮貌, 良好的禮貌有助於激發大家對你問題回應的熱情

    兩者皆非
    純粹因為外接的USB IO CARD所提供的Driver不支援x64,所以其實一接上IO CARD就沒辦法安裝他的驅動程式


    就是想避免他在X64環境下只想看看程式而不接上IO CARD執行功能,這時就偵測到他為X64然後警告他非32位元執行可能會有程式錯誤的風險
    如果他繼續執行就可能讓程式當掉
    因為一旦要跟USB IO CARD做溝通時,USBIO的DLL檔會找不到外部的USBIO驅動程式就會導致程式崩潰,連個錯誤回傳值都不會有
    如果有找到驅動程式而沒有接上USB IO CARD副程式則會自己回傳數值回來


    做這個功能單純是拿來提醒那些要在X64執行程式的使用者而已


    如果廠商未來提供X64的DRIVER當然就直接無痛更改掉



    2010年1月30日 上午 10:54