Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/159.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从Windows系统中完全删除文件_C#_C++_C_Operating System - Fatal编程技术网

C# 如何从Windows系统中完全删除文件

C# 如何从Windows系统中完全删除文件,c#,c++,c,operating-system,C#,C++,C,Operating System,我尝试过搜索,但没有找到任何好的答案 我想知道如何从Windows系统中完全删除一个文件,使其无法以任何方式恢复 我知道互联网上有一些软件可以完全从系统中删除文件。我想为自己做一个小演示,想看看它是否真的被从系统中删除了 例如:如果我使用SHIFT+delete删除一个文件,我知道普通用户无法恢复该文件。但是有一些恢复软件可以用来恢复该文件。所以,我只是想删除文件,使恢复软件无法恢复特定的文件 谁能告诉我,这是怎么做到的?我将非常感激。如果有人能分享一小段代码来实现这一点。我可以用那种方式更好地

我尝试过搜索,但没有找到任何好的答案

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

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

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

谁能告诉我,这是怎么做到的?我将非常感激。如果有人能分享一小段代码来实现这一点。我可以用那种方式更好地理解它

谢谢


关于

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

假设你有一个超级机密/禁运/非法/任何你真正想处理的文件。首先,它应该首先被加密。只是说说而已

不管怎样,文件的部分甚至全部都会出现在很多地方。内存、页面文件、休眠文件,可能是硬盘上的空白空间(例如,通过碎片整理重新定位文件内容后)。你有在线同步服务吗?备份?一个SSD驱动器,在每次写入时将您的文件分散在physcal块上?哦,亲爱的

所以,要想真正摆脱这个文件,至少在您的lokal系统上,作为最低限度的措施,您必须

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

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

将文件归零,然后移位delete@Milind为了安全起见,请将硬盘的其余部分也填满零以确保安全。只是出于好奇,您为什么要使恢复软件无法提供此功能。。?您是否在您认为需要
CYA
的地方做了一些
阴暗的
非法的
。。?你能提供更多关于这一点的重要性的信息吗?嗯,有这个,但我认为这些答案甚至都不正确。关于为什么不可能有选择地删除单个文件的伟大总结。我希望有关超级用户的相关问题(实际上是关于这个主题的问题)的答案是直截了当的,而且信息丰富。是的,非常棒的总结。它真的帮助我理解了这个概念。我正在写一个安全的聊天程序,我将在其中制作文件共享模块,在其中我将需要删除共享的文件。所以,我很困惑,但这确实帮助我理解了事情。如果您想为我的程序提供任何建议,欢迎:)@AmanThakur:尝试用随机字节覆盖完整的文件内容,关闭它,然后删除它。如上所述,内容仍然有可能是可恢复的,但至少恢复起来并不容易。如果你在程序中使用加密技术,不要试图自己编写。加密很难,即使是久经沙场的专家也总是出错。搜索解决您特定问题的完善且维护良好的加密库。谢谢Toni,您真的给了我一个非常有用的信息。我真的很感激。