System32 中的 Dll 與系統路徑

System32 中的 Dll 與系統路徑

在 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

對此大加讚賞:

http://msdn.microsoft.com/en-us/library/7d83bc18(VS.80).aspx

請注意“訂單已更改!”引用此頁面的評論:

http://msdn.microsoft.com/en-us/library/ms972822.aspx

答案4

DLL 載入由 Windows API LoadLibrary 函數處理,搜尋順序在文件中進行了描述:http://msdn.microsoft.com/en-us/library/ms684175(VS.85).aspx

相關內容