【发布时间】:2011-08-17 04:29:15
【问题描述】:
我想知道如何编写一个程序来从我的硬盘驱动器中永久删除文件。我知道在删除系统与数据的链接方面,我的程序至少需要具有与“rm”相同的功能,但我也对如何消除(完全)磁盘上的数据感兴趣。
我很确定 C 和程序集将提供这种低级功能,但我什至不确定如何开始尝试访问磁盘的某些部分,或追踪磁盘上文件的不同片段。
我知道由于我缺乏文件系统知识,这可能看起来像是一个大项目,但我只是在努力学习。我知道我需要更多地了解硬盘驱动器以及我特别尝试使用的驱动器类型。但是您可以提供的任何帮助/链接将不胜感激。
【问题讨论】:
-
我不认为您可以直接执行此操作,而无需编写内核空间代码。操作系统负责对硬盘的低级访问。
-
不确定这是否能回答您的问题,但要永久删除一个文件,我认为您的意思是它不会被恢复,所以如果您用垃圾数据重写文件的每个字节,然后将其删除之后应该这样做。
-
@AtoMerZ:可能会这样做,但例如在 Windows Vista 上,如果该驱动器有影子存储,它就不会这样做,并且您的文件已被系统还原点捕获。从某种意义上说,如果覆盖文件永久删除旧内容,系统还原根本不起作用,这是显而易见的,但如果要粉碎文件,则必须了解哪些文件具有卷影副本,这并不明显.
-
@Steve Jessop,是的,但我认为没有任何程序可以跟踪它,不是吗?
-
@AtoMerZ:可移植程序无法执行任何操作,但在 Windows 上,至少可以识别何时存在卷影副本。我不知道执行此操作的 Windows API 的详细信息,但可以管理诸如“Shadow Explorer”之类的东西。
标签: c assembly filesystems hard-drive delete-file