win10系统,想做个强制删除文件工具,大神们指点
是彻底删除的那种,不是改注册表默认不运行了的那种,就是像360强制粉碎那样的删除工具,小巧方便,不知道怎么做,大神们有经验的指点一下,或者现成的给借鉴一下,谢谢
获取文件路径,打开文件,往里面反复写入几遍随机数据。然后再删除文件
删除文件和注册表没有什么关系。强制删除有两个含义,一个是删除操作系统被标记为指定的文件,方法是调用底层的nt api关闭文件句柄然后删除,一般病毒会锁定文件防止删除。还有一个含义是文件内容覆盖随机信息,使得文件无法被恢复工具恢复。
但是单纯的文件删除有时候不奏效,这是因为驻留在系统中的病毒会在文件实际上删除以后再创建文件,实际上这个已经和删除没有什么关系了,不是文件没有删除,而是病毒重新创建了文件,那么要想解决编程的话相当于写一个杀毒软件,就不是很简单的事情了。
兄弟先理解文件的基本原理,首先你要理解磁盘分区和数据存放的基本原理,然后理解文件系统,不同的文件系统对文件数据存放的方式和处理方式是不同的。
文件存入磁盘以后,会先在分区表中的文件分配表中写入文件的一些信息,如文件的大小,路径,名称和在次盘内的位置,然后在吧文件数据写入到对应的磁盘内的位置,这个位置是一个或者若干个区段数据块,每个数据块的大小有文件系统来决定,这种区段并不一定是连续的,如果不连续说明是磁盘碎片,这些信息都在文件分配表内保存。其实真正删除一个文件是要把这些数据块内的数据全部删除的,这本身是一个比存入文件更复杂和耗时的工作,所以操作系统是不会干这种事情的,删除操作其实只是删除文件分配表内的文件信息,而不是去数据区真实的删掉数据,这也是为什么删除的数据可以恢复的原因。如果你想彻底删除数据,目前操作系统的机制很难办到,也不用去办,因为没有文件分配表的指引想要找回数据是很难的,既然找回难,再想彻底删除同样难。
对于操作系统而言,你在同样的位置新建同样的文件,你不一定就会改变实际你想要覆盖的数据,因为这完全有操作系统来处理,你无法插手,你只能根据操作系统对文件处理的特性推断出大概的操作范围,做到破坏原有文件,而不是删除,这就是为什么叫文件粉碎而不是彻底删除了,而数据一般都具有连贯性逻辑性,所以被破坏的数据也有可能通过逻辑,从现有数据推导出丢失数据,这也就是为什么数据及时被覆盖几次也可能回复的原因了