在 Windows 中,Windows 在這些資料夾中尋找 .dll 的方式有何偏好?例如,如果我有同一個 dll 的兩個版本,一個在 System 32 資料夾中,一個在系統路徑中,Windows 首先查找哪裡?
答案1
Windows 首先搜尋“已知的 DLL”,例如 Kernel32.dll 和 User32.dll。
Windows 然後按以下順序搜尋 DLL:
Windows 系統目錄。 GetSystemDirectory 函式檢索該目錄的路徑。
Windows 目錄。 GetWindowsDirectory 函數會擷取該目錄的路徑。
目前進程的可執行模組所在目錄。
目前目錄。
PATH 環境變數中所列的目錄。
請注意,在 64 位元 Windows 下,32 位元進程使用 32 位元 system32 目錄,而不是 64 位元目錄。
2k3 或 XP sp1 之前的版本略有不同。
答案2
取決於您的PATH
環境變量,但通常%windir%\System32
在%windir%
.
戴上我的開發帽:只要有可能,我都會避免在這兩個資料夾中安裝任何內容,特別是對於具有平行組件支援的最新作業系統版本(例如 XP/Vista/2008)。
如果您安裝的應用程式在兩個地方都放置了 .DLL,那麼我會聯絡開發人員來修復它。
答案3
答案4
DLL 載入由 Windows API LoadLibrary 函數處理,搜尋順序在文件中進行了描述:http://msdn.microsoft.com/en-us/library/ms684175(VS.85).aspx