Windows 透過註冊表 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs 維護核心 DLL 別名對應,確保關鍵系統元件(如 kernel32.dll)永遠從 System32 載入,防止 DLL 劫持與版本衝突。
kernel32)。kernel32.dll)。LoadLibrary("kernel32.dll") 未指定完整路徑時,載入器優先檢查 KnownDLLs,命中則直接從 System32 載入,忽略當前目錄同名檔案。透過修改註冊表值,可將系統 DLL 導向自訂版本(如偵錯版、相容性修補版),但極度不建議於生產環境操作,可能導致系統不穩或無法開機。測試環境請務必備份機碼。
若應用程式 myapp.exe 需強制優先載入同目錄下的私有 DLL(避免與系統/其他軟體版本衝突),只需在同目錄建立空檔案 myapp.exe.local,啟動時載入器會優先搜尋應用程式目錄。
SetDllDirectory/AddDllDirectory 控制搜尋順序。.local 檔案;共用 DLL 走 SxS 清單或安裝至 System32(需簽章驗證)。