dll(动态链接库),是一种可以被程序调用的一种通用型文件。
也正因为这个特性,导致在删除垃圾软件后,会残留许多dll难以卸载。
如图
类似的“已在windows资源管理器打开”,如果要删除会耗费大量的精力,可能结果还删不掉。
1、查看dll调用
在删除dll文件的时候需要先确定被哪些exe程序调用了,将此任务结束,才能删除 dll文件。
一个简单的查询方法是cmd中命令查询。
Tasklist /m qingshellext64.dll
Tasklist 任务列出,后边加上具体的dll文件全称,就可以看到是具体哪些exe程序调用了该dll文件。
如图
好家伙,直接被explorer调用了。
重新运行,无用。
2、删除正在被调用dll---AlwaysUnloaDll
win + R 打开运行框,输入命令 " regedit " 打开注册表,打开以下目录 " HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer
空白处新建
重命名为AlwaysUnloaDll
右键修改值为1
重启
然后就可以删除正在被调用的dlll。
3、AlwaysUnloaDll强制删除dll原理
这是本文的关键
之前搜索了许多资料,但是都是告诉了步骤,没有讲解具体原理。
我有点钻牛角尖了,只想了解原理,在谷歌、百度之后,得到了答案
AlwaysUnloaDll是windows中的一个注册表键值,它的作用就是控制是否强制删除dll文件,如果它的数值设置为0,默认不启用,即无法删除正在被调用的dll,将它的值设为1,开启强制卸载dll功能。
但是如果开启的话可能会导致一些电脑的问题,一些重要的dll缺失会引发问题。比如系统dll
因此建议如果开启了,不要随意删除dll,或者删除垃圾文件的dll后,就再次关闭它