Delapp – 开源的文件删除工具,专治文件占用不可删除[Windows]开发者「瞎扯八道」写的好

Delapp 是一个 Windows 上删除文件与文件夹的工具,主要解决「被其他程序打开的文件和文件夹」无法删除的文件,还支持删除以.或(空格)结尾的文件夹。还有速度快,支持 Windows 7,另外开发者的「瞎扯八道」写的好。@Appinn

Delapp - 开源的文件删除工具,专治文件占用不可删除[Windows]开发者「瞎扯八道」写的好

来自发现频道,开发者 @differentrain 自荐:https://meta.appinn.net/t/topic/43782

这是一款被 @Debatrix 称为「刚听到感觉很没用,稍微想想又感觉很有用,再仔细想想还是很没用」的工具,青小蛙也这样觉得 😂

以下为原文:

简介

  • 高速删除文件和文件夹
  • 删除以. (空格)结尾的文件夹
  • 删除被其他程序打开的文件和文件夹
  • 删除映射文件
  • 删除正在运行的程序
  • 删除正被使用的动态运行库

项目网站&下载

截图

Delapp - 开源的文件删除工具,专治文件占用不可删除[Windows]开发者「瞎扯八道」写的好 1
Delapp - 开源的文件删除工具,专治文件占用不可删除[Windows]开发者「瞎扯八道」写的好 2

瞎扯八道

很久以前写过一个类似的东西 DeletionTool, 不过它有不少小毛病,于是找个时间重写了一下。

其实“解除文件占用”从技术方面讲很简单,像 BlackINT3 大佬的 OpenArk, 解锁占用只是其中最微不足道的功能之一。

这项技术最大难点在于 Ring3 层面的束手束脚。最典型的例子 QueryObject,这玩意不进内核简直就是达利特,碰见 pipe 等大哥正在进行 SYNCHRONIZE 操作,直接挂起到老死,DeletionTool 就有这个问题。

写 Delapp 的时候,我不想为了小工具单独写个驱动,还得安装,麻烦且不环保,于是试了很多办法,研究了一两天才解决。

大部分接解除用工具到这里就结束了,实测的时候,还有一些情况无法解决,比如被删除的是一个程序exe,或者是一个正被使用的dll。当然这也不难,遇到程序直接关闭进程,遇到dll或者映射文件直接unmap。

于是Delapp解除占用的流程是这样的:首先判断被占用的是不是程序,如果是程序就关闭,如果是其他模块(dll)或者映射文件,则unmap掉,最后才是像其他程序一样检测句柄问题。

这套流程可以做到至少70%的文件都是想删就删,不过肯定有风险,某些软件可能就闪退了,这个没办法,于是我强制加了个提示,必须确认才会删除。

不过它毕竟是用户层的应用,对系统是没影响的,大概。我曾经一度想做个提权,弄到System权限,能删的东西就更多,不过单文件就做不到了,于是作罢。

还有就是以.(空格)结尾的文件夹。

打开命令行,输入 md test..\,就可以创造一个名为test..的文件夹,摁Delete或者邮件删不掉的,输入命令 rd test..\才能删掉。我最开始遇见这个问题是下在本子的时候,特别糟心,可以说是我写这两个软件的最大动机了……

这个问题吧,是shell外壳程序的BUG导致的,这意味着系统通用的文件对话框完全不能用了,所以如上图,我做了个简陋的对话框,专门用来处理这种糟心货。

用起来肯定不如系统自带的那个方便,如果不是这种倒霉玩意儿,直接拖到软件上或者用右键菜单就可以了,要是遇上了,想删除或者修复的话,就用这对话框手动选择吧。

P·S:刚才发给朋友,被鄙视了,因为这程序不能删除自己……其实是能做到的,但要创建临时文件或者task了,不优雅。所以我把自身的路径,和所属文件夹路径都屏蔽了。


原文:https://www.appinn.com/delapp-for-windows/

2 条留言

  1. Asc 2023/05/20 回复
  2. xxyy 2023/05/23 回复

写留言