问题描述:
一个应用程序在运行时,可能会调用多个DLL文件,那么,我们怎么知道它究竟调用了那些DLL文件呢?
谢谢大家了.
解析:
depends只能得到软件中隐式链接的Dll库,也就是用lib关联的Dll模块,无法显示显式链接的Dll模块,也就是用LoadLibrary函数导入的Dll函数。
可以将程序运行时加载的所有模块列出来的软件,网上有很多可以免费下载的。
我曾在无聊时也做了一个这样的程序,可以列出系统中运行的所有进程的树状关系(进程树)、每个进程启动时间、消耗的CPU时间、CPU占用率以及其所加载所有模块等信息。如果你需要的话,可以EMAIL一个给你。
当你运行的程序正在调用某个dll文件时,正在使用的文件是当然不可能给你删除的。一般会提示:另一个程序正在使用此文件 or 拒绝访问等..那么,到底是哪个程序在调用这个dll文件呢。一个方法可以把那个程序很容易的找出来。。在运行里输入cmd进入命令提示符。然后输入命令:tasklist /mc:\123.txt不要急。到C盘下面去找一找,是不是有了一个123.txt?(当然。你可以自己设定文件的输出路径,名字,甚至后缀。但要是文本文件哦。。)打开他。里面就是目前运行的各个程序正在调用的dll文件。找出来了后问题就好办多了。打开任务管理器。把对应的那个程序给关了。。就可以顺利删除了。。那就不必进安全模式,进DOS那么麻烦了。。。当然。有些应用程序是以服务形式运行的。那么你就有可能查到的是svhost.exe但是。里面有很多个哦。。这个也好办。仍然打开命令提示符。输入tasklist /svc,当然,你也可以把他输出为文本文件,如tasklist /svcC:\234.txt。看到了吗?每个svchost.exe后面是不是对应有一个ID呢?有了ID一对照也可以知道是哪个服务了。。如果是可关的。就关了他。。不过记住。。系统进程可别乱关哦。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)