在調試DLL或COM程式的時候, DLL檔案可能會被其他程式佔用,而無法被替換。 在WinXP,Vista 上, 可以通過建立.local 檔案夾來重新導向DLL 的載入路徑
步驟(假設你的EXE為MyApp.exe, 要調試的DLL為 MyModule.dll):
1) 在 MyApp.exe 的目錄下建立一個 MyApp.exe.local
2) 把你希望載入的 MyModule.dll 複製到 MyApp.exe.local 目錄下
3) 運行 MyApp.exe
原來的 E:/Test/MyApp.exe 載入的DLL
ModLoad: 00400000 00432000 MyApp.exe
ModLoad: 7c800000 7c8f4000 C:/windows/system32/kernel32.dll
ModLoad: 77c10000 77c68000 C:/windows/system32/msvcrt.dll
ModLoad: 00440000 00c80000 C:/windows/system32/MyModule.dll
ModLoad: 77dd0000 77e6b000 C:/windows/system32/ADVAPI32.dll
建立.local 檔案夾之後,E:/Test/MyApp.exe 載入的DLL
ModLoad: 00400000 00432000 MyApp.exe
ModLoad: 7c800000 7c8f4000 C:/windows/system32/kernel32.dll
ModLoad: 77c10000 77c68000 C:/windows/system32/msvcrt.dll
ModLoad: 00440000 00c80000 E:/Test/MyApp.exe.Local/MyModule.dll
ModLoad: 77dd0000 77e6b000 C:/windows/system32/ADVAPI32.dll
注意: 要開啟.local這個功能,需要在註冊表設定DevOverrideEnable值,並且重啟機器
[HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows NT/CurrentVersion/Image File Execution Options]"
DevOverrideEnable"=dword:00000001 【小竅門】 可以在命令列輸入以下命令來設定註冊表:reg add "HKLM/Software/Microsoft/Windows NT/CurrentVersion/Image File Execution Options" /v DevOverrideEnable /t REG_DWORD /d 1 /f --