Dependency Walker是一款用于軟件與程序依賴關(guān)系檢測的實用軟件。能夠深入檢測各類32位或64位Windows模塊,例如可執(zhí)行文件、動態(tài)鏈接庫、控件擴展、系統(tǒng)驅(qū)動等文件類型,支持生成所有關(guān)聯(lián)模塊的層次化樹狀結(jié)構(gòu)圖,有助于處理因模塊加載或運行而產(chǎn)生的系統(tǒng)問題。如需此類工具,歡迎免費獲取并使用。
Dependency Walker使用方法
1、打開Dependency Walker,直接拖入目標exe文件或者dll文件(也可以點擊菜單欄上的File,通過Open對話框來打開目標文件),運行界面如下:

2、單擊MyDll.dll,運行界面如下:

3、界面右側(cè)的Function下的函數(shù)簽名不太清晰,可以右鍵函數(shù)名,選擇Undecorate C++ Functions,將函數(shù)簽名轉(zhuǎn)換成更為易讀的形式:

4、轉(zhuǎn)換后的形式如下:

Dependency Walker軟件特色
1.可掃描任意32位或64位Windows模塊(含exe、dll、ocx、sys等格式),并生成所有關(guān)聯(lián)模塊的分層樹形圖。
2.對于排查模塊加載、執(zhí)行相關(guān)的系統(tǒng)錯誤極具實用價值。
3.兼容Windows 95、98、Me、NT、2000、XP、2003、Vista、7及8等多個系統(tǒng)版本。
4.完全免費供使用者調(diào)用,但禁止通過分發(fā)該軟件牟利,也不可將其與其他產(chǎn)品捆綁銷售。
Dependency Walker常見問題
1.Dependency Walker似乎只顯示了應(yīng)用程序的部分依賴項,為何不全部展示?
首次在Dependency Walker中打開模塊時,僅會顯示隱式、轉(zhuǎn)發(fā)及延遲加載依賴項。不少依賴項為動態(tài)加載類型,需在該工具中分析應(yīng)用程序后才能被檢測到。如需詳細信息,可參考“Dependency Walker處理的依賴項類型”及“通過應(yīng)用程序分析檢測動態(tài)依賴項”相關(guān)內(nèi)容。
2.為何在多款應(yīng)用程序中,MPR.DLL會在SHLWAPI.DLL下方以紅色標注,提示缺少WNetRestoreConnectionA函數(shù)?同時還會收到“警告:因延遲加載關(guān)聯(lián)模塊中缺少導(dǎo)出函數(shù),至少有一個模塊存在未解析的導(dǎo)入項”提示?
部分版本的SHLWAPI.DLL(如Windows XP自帶版本),對MPR.DLL中的WNetRestoreConnectionA函數(shù)存在延遲加載依賴。只要調(diào)用該DLL的程序能應(yīng)對此情況,缺失延遲加載函數(shù)就不會造成問題。Dependency Walker會標記所有潛在問題,因其無法判斷應(yīng)用程序是否準備好處理這類場景。而SHLWAPI.DLL本身并不要求WNetRestoreConnectionA函數(shù)必須存在,會在運行時處理函數(shù)缺失的情況,因此該警告可忽略。更多詳情可查閱幫助文檔中“如何解讀Dependency Walker中的警告與錯誤”章節(jié)。
3.為何MSJAVA.DLL會顯示為黃色(提示缺失模塊),且彈出“警告:至少有一個延遲加載依賴模塊未找到”的提示?
隨Windows XP SP2及Windows 2003 SP1一同發(fā)布的MSHTML.DLL模塊,對MSJAVA.DLL存在延遲加載依賴。只要調(diào)用該DLL的程序能應(yīng)對模塊缺失問題,延遲加載依賴項丟失就無影響。Dependency Walker會標記所有潛在問題,因其無法判斷應(yīng)用程序是否準備好處理這類場景。本場景中,MSJAVA.DLL屬于可選模塊,MSHTML.DLL已做好應(yīng)對其缺失的準備,該警告可忽略。更多詳情可查閱幫助文檔中“如何解讀Dependency Walker中的警告與錯誤”章節(jié)。
Dependency Walker更新日志
v2.2.6000版本
- 移至新的HTML幫助系統(tǒng)并更新了幫助文本。
- 添加了對MSDN 8.0外部幫助的支持,并更新了在線幫助URL。
- 處理DLL清單和app.exe.local文件的改進的并行支持。
- 更新了有關(guān)已知操作系統(tǒng)版本、內(nèi)部版本號和Vista RC1內(nèi)部版本標志的內(nèi)部信息。