Windows XP Windows 7 Windows 2003 Windows Vista Windows教程綜合 Linux 系統教程
Windows 10 Windows 8 Windows 2008 Windows NT Windows Server 電腦軟件教程
 Windows教程網 >> Windows教程綜合 >> 關於windows >> Windows 對 DLL 文件的一些處理

Windows 對 DLL 文件的一些處理

日期:2017/2/7 14:14:07      編輯:關於windows
 

Windows 的 DLL 文件是可以有別名的,它設置在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\KnownDLLs
中,用注冊表編輯器,我們可以看到這個別名的列表。

比如有一條數據是 kernel32 / kernel32.dll 這條記錄保證了再調用 LoadLibrary("kernel32.dll") 的時候,系統總是調用的 system32 下的 kernel32.dll 這個版本。而不會是當前目錄下的 kernel32.dll (如果有的話)
這是如何做到的呢?

LoadLibrary 發現參數字符串中需要加載的是 kernel32.dll (沒有顯式指定路徑) 的話,就會在注冊表中找到 DllDirectory 這一項,再那個指定路徑下加載 kernel32.dll 。

注意,這裡的鍵名是沒有 .dll 的後綴的。系統在識別 dll 是否屬於 KnownDLLs 的時候,只能對需要加載的後綴為 .dll 的文件起效,在匹配鍵名的時候再截斷後綴。

我們也可以通過修改注冊表,達到給這些系統的 DLL 換名的效果。

<strong>關於 COM 對象 DLL 存放在本地目錄的問題</strong>

已經注冊的 COM 對象,如果害怕跟別的軟件沖突,就可以用 DLL 轉移技術。不過這個 Windows 98 中是不支持的。

比如 myapp.exe 想強制優先加載當前目錄下的 DLL ,那麼只要創建一個文件名叫作 myapp.exe.local ,啟動 myapp.exe 後, DLL 都將優先從當前目錄加載了。

Copyright © Windows教程網 All Rights Reserved