2010-04-20 39 views
1

我正在“检测”(更像是列出)我们应用程序的所有依赖关系的过程。检测应用程序的所有依赖关系

目前,我正在使用depends.exe(Dependency Walker)来检测所有的文件依赖关系。

我实际上能够通过关于缺少文件和依赖关系的所有错误消息。但是,启动应用程序时,我所得到的只是一个没有任何消息的崩溃。

在“工作”配置/系统上,我能够成功启动此应用程序。杀死某个服务会产生“崩溃”的行为。这使我得出这样的结论:应用程序需要此服务的SOMETHING,并且此服务是依赖项。但是,depend.exe将无法“检测”此依赖项。

我的问题是:是否有一个应用程序可以以编程方式检测依赖项,如数据库和服务?

谢谢!

回答

2

依赖Walker无法检测到动态加载的DLL的依赖关系。您可以使用Process Monitor来查找您的程序实际尝试查找哪个DLL。

+0

绝对procmon是攻击这个问题的方法。 不要忘记它可能依赖于已注册的COM对象和注册表项。 – glob 2010-04-20 11:20:57

+0

不要忘记Dependency Walker中的“Profile”命令,以查看运行时加载的DLL。 – Zamboni 2010-05-17 15:55:43

0

取决于您如何定义“依赖关系”。你可以(也许使用被黑的版本fabricate),确定你的应用程序依赖的'文件'(dll等)。

0

您需要PE Explorer及其Delay Import Viewer才能查看链接的延迟加载库列表。

+0

这些也不会在depends.exe中出现吗? – 2010-05-17 18:56:46