1. 程式人生 > >system system32 syswow64

system system32 syswow64

System

  • System儲存可執行16位程式碼DLL檔案

System32

  • 32位的Windows作業系統儲存可執行32位程式碼的DLL檔案
  • 64位的Windows作業系統儲存可執行64位程式碼的DLL檔案
    :為什麼System32的資料夾裝的是64位的系統檔案呢?
    原因:相容性。如果你寫了一個32位的應用程式,現在,你想把它變成64位的應用程式,以更充分地利用64位處理器所帶來的新的處理能力。你肯定覺得,這不就是讓64位編譯器編譯一遍就完了的事兒麼?可能你發現,這並不是骨感的現實。你突然發現,你的程式裡,為了某些你已經想不起來的原因,把System32這個資料夾,寫死在了你的程式裡。而這個System32中的32,讓你很不安。你嘗試著運行了你的程式,卻發現一切正常。為什麼呢?因為這是Windows系統的另一個相容性方面的努力:讓一個已有的32位應用程式,不加修改或者儘可能少地加以修改,便可以被編譯成64位應用程式並在64位Windows上執行
    。其實,把System32這樣的路徑,寫死在程式裡,並不是一個個案。所以,為了保證這些應用程式可以順利地過渡到64位,Windows最後還是決定讓64位的系統檔案放在System32的資料夾下

SysWow64

  • Wow64:(32 bit) Windows on Windows 64,即執行在64 windows上的32位windows
  • 64位作業系統儲存可執行的32位程式碼執行的DLL檔案
  • 如果32位應用程式寫死在System32資料夾中,系統會將其轉到SysWow64資料夾中去
    :為什麼不讓System32下可執行的64位程式碼直接轉到SysWow64資料夾中去呢?
    原因
    :作為64位Windows作業系統,當然是希望能充分發揮64位處理器的潛力,讓應用程式更有效率地執行。如果在執行64位應用程式時,總要檢查是否需要轉向,勢必影響程式執行效率。所以,不能給64位應用程式做沒有必要的轉向,如果說必須要轉,那就只能轉32位應用程式了。是的,沒有辦法,在64位作業系統中,32位應用程式要做一些小的犧牲。

參考

https://blog.csdn.net/oncealong/article/details/50477997