c# - 如何从Windows系统中彻底删除文件

标签 c# c++ c operating-system

我尝试过搜索,但没有找到适合我查询的任何好的答案。

我想知道如何从 Windows 系统中完全删除文件,使其无法以任何方式恢复。

我知道互联网上有一些软件可以从系统中完全删除文件。我想为自己做一个小演示,想看看它是否真的从系统中删除/删除了。

例如:如果我使用 SHIFT + DELETE 删除文件,我知道普通用户无法恢复该文件。但是有一些恢复软件可以用来恢复该文件。所以,我只是想以某种方式删除该文件,以便恢复软件无法恢复特定文件。

谁能告诉我,这是怎么做到的?我真的很感激。如果有人可以分享一小段代码来实现这一点。这样我就能更好地理解它。

谢谢

此致

最佳答案

这是一个棘手的问题,不能用“一小段代码”来解决。

假设您有一个 super secret /令人尴尬/非法/任何您真正想要删除的文件。首先,它本来就应该被加密。只是说一下。

无论如何,文件的部分甚至整个文件可能会出现在很多地方。内存、页面文件、休眠文件、硬盘驱动器上的空白空间(例如通过碎片整理重新定位文件内容后)。你们有在线同步服务吗?备份? SSD 驱动器可以在每次写入时将文件分散到所有物理 block 位置?噢,亲爱的。

因此,要至少在本地系统上真正真正删除该文件,作为最低限度的措施,您必须这样做

  • 通过您选择的 API 删除它(除非通过普通 UI 将其移至“垃圾桶”)
  • 禁用并删除系统页面文件
  • 删除休眠文件
  • 用随机字节覆盖硬盘驱动器中所有所谓的空白空间
  • 重新启动系统
  • 重新实例化页面文件

但是:SSD 和某些硬盘驱动器具有备用容量 block ,当 block 产生错误时,它们可以用作备用容量 block 。如果您的文件碰巧位于这样一个失败的 block 中,它可能已被驱动器固件默默地重新定位,并且驱动器将永远不会通过可通过 Windows API 访问的方式再次写入该 block 。因此,如果您想真正确定您必须物理销毁该文件曾经写入的所有驱动器。

关于c# - 如何从Windows系统中彻底删除文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28798108/

相关文章:

c++ - 为什么我在重载运算符时出现此错误?

C++ - 写时复制基本实现

c - linux内核中具有相同签名的函数

ANSI C 中的颜色控制台?

c# - 查找字符串中的所有子字符串c#(正则表达式,字符数组?)

c# - Ozeki Voip SDK 引发内存损坏异常

c++ - C++ 中的 Regex 语句未按预期工作

c# - 具有多个 child 的通用基类

c# - 执行时安装文件后的 Wix 自定义操作 dll

C 语言的 Javascript 等效项(*、f、-> 等)