Dependency Walker是一款用于软件与程序依赖关系检测的实用软件。能够深入检测各类32位或64位Windows模块,例如可执行文件、动态链接库、控件扩展、系统驱动等文件类型,支持生成所有关联模块的层次化树状结构图,有助于处理因模块加载或运行而产生的系统问题。如需此类工具,欢迎免费获取并使用。
Dependency Walker使用方法
1、打开Dependency Walker,直接拖入目标exe文件或者dll文件(也可以点击菜单栏上的File,通过Open对话框来打开目标文件),运行界面如下:

2、单击MyDll.dll,运行界面如下:

3、界面右侧的Function下的函数签名不太清晰,可以右键函数名,选择Undecorate C++ Functions,将函数签名转换成更为易读的形式:

4、转换后的形式如下:

Dependency Walker软件特色
1.可扫描任意32位或64位Windows模块(含exe、dll、ocx、sys等格式),并生成所有关联模块的分层树形图。
2.对于排查模块加载、执行相关的系统错误极具实用价值。
3.兼容Windows 95、98、Me、NT、2000、XP、2003、Vista、7及8等多个系统版本。
4.完全免费供使用者调用,但禁止通过分发该软件牟利,也不可将其与其他产品捆绑销售。
Dependency Walker常见问题
1.Dependency Walker似乎只显示了应用程序的部分依赖项,为何不全部展示?
首次在Dependency Walker中打开模块时,仅会显示隐式、转发及延迟加载依赖项。不少依赖项为动态加载类型,需在该工具中分析应用程序后才能被检测到。如需详细信息,可参考“Dependency Walker处理的依赖项类型”及“通过应用程序分析检测动态依赖项”相关内容。
2.为何在多款应用程序中,MPR.DLL会在SHLWAPI.DLL下方以红色标注,提示缺少WNetRestoreConnectionA函数?同时还会收到“警告:因延迟加载关联模块中缺少导出函数,至少有一个模块存在未解析的导入项”提示?
部分版本的SHLWAPI.DLL(如Windows XP自带版本),对MPR.DLL中的WNetRestoreConnectionA函数存在延迟加载依赖。只要调用该DLL的程序能应对此情况,缺失延迟加载函数就不会造成问题。Dependency Walker会标记所有潜在问题,因其无法判断应用程序是否准备好处理这类场景。而SHLWAPI.DLL本身并不要求WNetRestoreConnectionA函数必须存在,会在运行时处理函数缺失的情况,因此该警告可忽略。更多详情可查阅帮助文档中“如何解读Dependency Walker中的警告与错误”章节。
3.为何MSJAVA.DLL会显示为黄色(提示缺失模块),且弹出“警告:至少有一个延迟加载依赖模块未找到”的提示?
随Windows XP SP2及Windows 2003 SP1一同发布的MSHTML.DLL模块,对MSJAVA.DLL存在延迟加载依赖。只要调用该DLL的程序能应对模块缺失问题,延迟加载依赖项丢失就无影响。Dependency Walker会标记所有潜在问题,因其无法判断应用程序是否准备好处理这类场景。本场景中,MSJAVA.DLL属于可选模块,MSHTML.DLL已做好应对其缺失的准备,该警告可忽略。更多详情可查阅帮助文档中“如何解读Dependency Walker中的警告与错误”章节。
Dependency Walker更新日志
v2.2.6000版本
- 移至新的HTML帮助系统并更新了帮助文本。
- 添加了对MSDN 8.0外部帮助的支持,并更新了在线帮助URL。
- 处理DLL清单和app.exe.local文件的改进的并行支持。
- 更新了有关已知操作系统版本、内部版本号和Vista RC1内部版本标志的内部信息。
