可能重复: C# -永久删除文件
你好,
我正在使用C# .NET Framework2.0。我有一个关于文件粉碎的问题。
我的目标操作系统是Windows 7、Windows和Windows。可能是Windows 2003或2008,但我猜它们应该与前三个相同。
我的目标是安全地删除一个文件。
我不认为使用File.Delete是安全的。我在某个地方读到,操作系统只是在删除文件时将原始硬盘数据标记为删除--这些数据根本不被删除。这就是为什么有这么多的工作方法来恢复所谓的“删除”文件。我也读过,这就是为什么覆盖文件要有用得多,因为那时磁盘上的数据实际上必须改变。这是真的吗?这一般都是需要的吗?
如果是这样的话,我相信我可以简单地写满1和0的文件几次。
我读过:http://www.codeproject.com/KB/files/NShred.aspx http://blogs.computerworld.com/node/5756 http://blogs.computerworld.com/node/5687 安全地删除C#.NET中的文件
发布于 2010-12-30 07:19:40
恐怕你正面临着一个复杂的问题。我建议你不要自己解决这个问题。
请注意,除了确保对文件进行物理覆盖(可能在LAN、flash或其他方面)之外,您还必须处理任何应用程序缓存、windows hibernate文件、windows恢复文件、windows交换文件,以及该文件的所有副本或旧版本(交换以前包含缓存的所有空白空间,或者更糟的是包含缓存的空间,并且可能已经分配给其他文件)--所有顺序都是正确的。
我认为,如果您能够将文件存储在专用的逻辑(甚至物理)驱动器上(这不是操作系统或其他应用程序所使用的),并且在内存中(使用VirtualLock())时,您可以说服Windows不要交换用于保存文件的内存,那么您的机会可能会更大。尽管如此,您还是应该删除交换、缓存等。
最重要的是,您应该将像橡皮檫这样的产品集成到您的应用程序中(橡皮擦是免费软件,其源代码是在GNU通用公共许可证下发布的)。
发布于 2010-12-30 06:18:11
从什么我读过来看,使数据不再可见的解决方案似乎是用0和1覆盖文件。
发布于 2010-12-30 06:31:03
如果您要安全删除的文件首先是您的文件,那么首先您可能需要考虑加密它。然后,即使在删除后恢复,信息也不会被公开(假设您可以控制密钥)。
https://stackoverflow.com/questions/4560425
复制相似问题