如何通过代码直接读取/写入存储的计算机数据

本文关键字:存储 计算机数据 读取 何通过 代码 | 更新日期: 2023-09-27 18:28:47

每当我在谷歌上搜索如何安装时,无论我尝试什么,我都会得到关于如何安装新硬盘、RAM等的答案,或者关于硬盘和RAM如何工作的信息。

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

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

同样,AVG如何将数据移动到"碎片整理"?我假设它读取数据并将数据写入磁盘的"前端",这样读取速度会更快

我希望我已经说清楚了,我认为这也取决于操作系统。

如何通过代码直接读取/写入存储的计算机数据

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

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

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

  • 磁盘存储
  • 文件系统
  • 数据擦除
  • 碎片整理