如何通过代码

时间:2016-01-02 14:41:32

标签: c# memory-management binary

每当我用Google搜索如何操作时,无论我尝试什么,我都会得到有关如何安装新硬盘,RAM等以及硬盘驱动器和RAM如何工作的信息的答案。

假设我正在使用C#,我将如何尝试直接更改计算机保存的数据,例如更改直接更改二进制文件。

我可能会对这个问题感到困惑,所以我将举例说明我认为这是一个程序。 AVG有一个'数据粉碎器'功能,我认为它无法恢复已删除的文件,因为我认为它将二进制(或其他东西)更改为文件所在的已分配面上的随机值。我将如何用C#(或任何其他语言)实现这一目标

同样,AVG如何将数据移至'碎片整理'?我假设它读取数据并将数据写入磁盘的“前端”,因此读取它的速度更快。

我希望自己清楚明白,我认为这也取决于操作系统。

2 个答案:

答案 0 :(得分:2)

您所说的是访问原始磁盘扇区。如果没有使用名为PInvoke的技术,C#在该级别没有访问权限,而这种技术非常先进。这种访问需要详细了解各种磁盘布局结构,如NTFS和FAT32,以及分区方案,如GPT。如果没有这些知识,您很可能会破坏您尝试操作的驱动器,导致操作系统无法读取它。

答案 1 :(得分:2)

出于性能原因,大多数现代操作系统不会擦除硬盘驱动器上的数据,而只是将已删除文件占用的空间标记为可用于新数据写入。因此,有时可以删除该标记并访问已删除的数据。要安全擦除数据,必须覆盖它。因此,在C#中,您可以打开一个文件进行读写,并使用随机二进制数据覆盖它,然后关闭文件并刷新磁盘上的缓冲区。此操作可重复几次以确保数据丢失。这与主轴硬盘上的FAT16 / 32文件系统有关。对于大多数现代存储设备,没有通用的解决方案。

如需进一步的建议,请查看以下内容: