在windows下的程式都是依賴于各種各樣的dll的,我現在想在程式運行時能加一個判斷,告知用戶程式因為缺少哪些dll而無法運行,請問可以實作嗎?
uj5u.com熱心網友回復:
貌似c++ builder 6 也還沒有dll延時加載支持,vc 6開始就有了
uj5u.com熱心網友回復:
程式中動態呼叫DLL,呼叫時先判斷檔案是否存在。uj5u.com熱心網友回復:
一般程式里面會有很多的隱式加載系統DLL,有些DLL我在寫程式的時候根本就不知道會需要到,比如說gpsvc.dll,sysnft.dll之類的,所以如果都是顯示的動態加載的話作業量太大了。關于延時加載我還沒有怎么研究過,先看下,不知道還有沒有其他可行的方法
uj5u.com熱心網友回復:
作業系統在運行我的程式的時候,是不是會先遍歷我的import, 然后去加載所有需要的dll,如果加載不成功的話,程式就不會運行了吧,因為我是寫的一個第三方的DLL,所以這個時候應該是dllmain函式就不會執行吧
uj5u.com熱心網友回復:
可以,要分析可執行檔案的匯入段,以前妖哥有這樣的代碼,可以列出exe檔案的相關dlluj5u.com熱心網友回復:
分析PE檔案的匯入表只適用于靜態呼叫的DLL,對于動態呼叫的,匯入表沒有什么痕跡。uj5u.com熱心網友回復:
只有延遲加載缺少的dll的話,才有機會執行代碼判斷哪個dll缺少。
uj5u.com熱心網友回復:
靜態DLL,分析exe的依賴;動態DLL,分析代碼的Loadlibraryuj5u.com熱心網友回復:
知道依賴的DLL不好判斷了轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/133522.html
下一篇:馬上上大四學生的困惑
