Windows 64 位元中的 Sysnative 資料夾是一個虛擬資料夾,也是指向 64 位元系統上的 System32 資料夾的別名。 它實際上並不存在於您的系統上。 這篇文章解釋了Windows 中的 Sysnative 資料夾。
隨著 64 位元 Windows 7 的發布,Windows 目錄中資料夾的正常分配發生了一些變化。 64 位元版本的 Windows 11、Windows 10、Windows 8 和 Windows 7 中包含兩個新資料夾。系統原生和系統WOW64資料夾。 這僅適用於 64 位元 Windows。 如果您在 64 位元電腦上執行 32 位元 Windows,您將看不到它們。 在 32 位元電腦上執行 32 位元 Windows 時,您也不會看到它們。
Windows目錄之外還有一個資料夾,它的名字叫程序文件 (x86)。 我們習慣存放程式可執行檔案的資料夾 Program Files 的名稱。 在 64 位元系統中,64 位元程式儲存在 Program Files 資料夾中,而 32 位元程式則儲存在 Program Files (x86) 中。 然而,Windows 使用類似模擬的方式在 64 位元電腦上執行 32 位元程式。 因此,有必要了解和了解Windows(64位元)下的系統資料夾是什麼,以便您知道如何存取您想要的檔案。
與 32 位元機器不同,32 位元 DLL 儲存在System32資料夾,64位元版本的Windows將與64位元相關的DLL儲存在System32資料夾中。 這是為了簡化程式設計目的並提供向後相容性。 也就是說,如果64位元程式在其程式碼中引用System32,則在呼叫時會自動取得64位元DLL。 這對開發人員很有幫助,因為他們不必更改 Windows 64 位元程式中的程式碼。
簡而言之,Windows 將所有32 位元DLL 從Windows 目錄中的System32 資料夾移至其他資料夾,以便在升級到64 位元之後,即使使用API,也無需重新編碼先前的程式即可取得正確的DLL 。 當 32 位元應用程式嘗試存取 System32 資料夾時會出現此問題。 在這種情況下,程式將會崩潰,因為它不是為處理 64 位元 DLL 而編寫的。
讀: 是什麼黑豹資料夾?
Windows 64 位元中的 SysWOW64 資料夾所有 32 位元 DLL 均已移至新的SysWOW64資料夾在 64 位元版本的 Windows 11、Windows 10、Windows 8 和 Windows 7 中,因此當 32 位元程式呼叫 32 位元 DLL 時,它們必須到達 SysWOW64 資料夾。
讀:System32 和 SysWOW64 資料夾之間的區別
您可能會覺得開發人員必須掃描他們的程式和應用程式以將 DLL 函數指向 SysWOW64 資料夾。 但微軟已經解決了這個問題。 如果呼叫的是 32 位元程序C:\Windows\System32,模擬器會將路徑重新導向到C:\Windows\SysWOW64。 也就是說,要在Windows 64位元中執行32位元程序,需要使用模擬器,以便有適當的向後相容性並避免在呼叫DLL檔案時發生錯誤。
在某些情況下,32 位元程式或應用程式可能需要 64 位元 DLL。 在這種情況下,您將必須使用重新導向資料夾系統原生。 您可以將 SysNative 視為一個虛擬資料夾和指向 System32 資料夾的別名。 它本身並不存在於您的系統上。
所以如果你的32位元程式需要存取64位元DLL,不要使用C:\Windows\System32因為32位元程式模擬器會將其帶到名為SysWOW64的32位元DLL資料夾中。 相反,使用C:\Windows\SysNative作為 DLL 程式的路徑。 在路徑中使用 Sysnative 會將其重定向到 System32 資料夾,而不是 SysWOW64 資料夾。
如果開啟檔案 Windows 資源管理器,您將在 C:\Windows 中找不到 Sysnative 資料夾。 即使您將資料夾選項設為顯示隱藏資料夾和系統資料夾。 這是因為,在 64 位元 Windows 中執行時,Windows 檔案總管是 64 位元程序,而 Sysnative 資料夾只能從 32 位元程序中可見和存取。
總結:
System32 資料夾包含 64 位元 DLL 檔案。SysWOW64包含32位元DLL文件,32位元程式會自動重定向到該資料夾Sysnative是一個重定向資料夾,允許32位元程式呼叫64位元DLL。補充閱讀:微軟軟體定義網絡。
讀: 是什麼FOUND.000 資料夾?