如果存在所有依赖的DLL,我需要检查给定的dll。我能够使用此问题中给出的代码获取DLL列表:How to programatically read native DLL imports in C#?。它给出了DLL列表,包括系统列表(如kernel32.dll和其他)。我需要的是从这个列表中删除它们,因为我不需要检查它们,我只需要检查开发人员显式导入的DLL。
任何想法如何做到这一点?
答案 0 :(得分:3)
Windows DLL和“常规”DLL之间没有任何区别。程序员实际上做了明确地创建了对它们的依赖,它不会偶然发生。并且你做必须检查它们,它可能需要一个DLL,比如说只能在更高版本的Windows上使用。
更严重的是,您的方法有很多方法无法可靠地运作。例如,你永远无法弄清楚何时使用Windows并行缓存中的DLL。你无法合理地进入解析清单的业务。 DLL对于其他DLL具有动态依赖性而非从IAT反向工程的静态依赖性也是非常常见的。例如,对于COM和.NET程序集都是如此。
只有一种好方法可以确定是否存在所需的DLL。加载DLL。