【问题标题】:C# - Deleting a file permanentlyC# - 永久删除文件
【发布时间】:2017-04-30 04:30:02
【问题描述】:

自从我开始使用 iPhone 以来,我已经有一段时间没有玩 C# 游戏了,但是你怎么能完全删除一个文件(所以它没有存储在内存中)并且无法恢复。如果不能永久删除,可以用随机数据打乱它,使其无法打开但仍然存在吗?

【问题讨论】:

    标签: c#


    【解决方案1】:

    当然可以覆盖文件以使以前的内容无法恢复。但这必须由驱动器本身完成,以确保正确的块被覆盖...... C# 与文件系统交互,而不是物理块,因此不会提供任何安全性。

    要求驱动器安全擦除某些内容的实际方法因接口而异(ATAPI 与 SATA,USB 大容量存储与 SCSI 与火线),而 C# 在此级别没有提供简单的命令方法。

    【讨论】:

    • 这个怎么样,我可以使用加密将文件加扰到根本无法读取的程度吗?已经有软件可以做到这一点,所以这是可能的,他们是怎么做到的?
    • @shorty:如果您第一次将数据写入磁盘时对其进行加密,那么没有密钥就没有人可以读取数据。如果它曾经以未加密的方式存储,那么防止恢复的唯一两种方法是 (1) 驱动器的内置安全擦除或 (2) 驱动器的完全物理销毁。
    • 物理破坏,如斧头?!甜的!好的,那么安全擦除呢,您如何运行该命令。我假设 C# 无法访问它。
    • 如果有人有足够的时间和一大笔钱,一把斧头可能会留下足够大的碎片来阅读。不过,将磁盘焚烧或磨成灰尘应该可以。至于运行安全擦除命令,这里有一个程序来执行它,以及一篇描述为什么其他方法不起作用的论文:cmrr.ucsd.edu/people/Hughes/SecureErase.shtml
    • 哈哈!你能分享一些代码来研磨/刻录硬盘吗?好吧,我想我的计划被毁了或者对我来说太难了:[坦克无论如何你都会得到最好的答案
    【解决方案2】:

    sdelete 在 c# 中通过 Process 运行此命令。

    Process p = new Process();
    p.StartInfo = new ProcessStartInfo( "cmd", "/c sdelete -p 1 -s -z -q -a 'path/to/director' )
        {
            RedirectStandardOutput = true,
            UseShellExecute = false,
            CreateNoWindow = true
        };
    p.Start();
    string output = p.StandardOutput.ReadToEnd();
    p.WaitForExit();
    

    sdelete 可以是downloaded here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-15
      • 1970-01-01
      • 2020-11-10
      • 2017-01-06
      相关资源
      最近更新 更多