C# 如何通过代码直接读/写存储的计算机数据
每当我在谷歌上搜索如何安装硬盘时,无论我如何尝试,我都会得到关于如何安装新硬盘、RAM等的答案,或者关于硬盘和RAM如何工作的信息 假设我使用的是C#,我将如何尝试直接更改计算机保存的数据,例如直接更改二进制文件 在这个问题上我可能会感到困惑,所以我将举一个例子,说明我认为是一个程序在这样做。AVG有一个“数据粉碎机”功能,我认为它不可能恢复已删除的文件,因为我假设它会将文件所在的分配面上的二进制(或其他内容)更改为随机值。我如何用C#(或任何其他语言)实现这一点 同样,AVG如何将数据移动到“碎片整理”?我假设它会将数据读写到磁盘的“前端”,因此读取速度更快C# 如何通过代码直接读/写存储的计算机数据,c#,memory-management,binary,C#,Memory Management,Binary,每当我在谷歌上搜索如何安装硬盘时,无论我如何尝试,我都会得到关于如何安装新硬盘、RAM等的答案,或者关于硬盘和RAM如何工作的信息 假设我使用的是C#,我将如何尝试直接更改计算机保存的数据,例如直接更改二进制文件 在这个问题上我可能会感到困惑,所以我将举一个例子,说明我认为是一个程序在这样做。AVG有一个“数据粉碎机”功能,我认为它不可能恢复已删除的文件,因为我假设它会将文件所在的分配面上的二进制(或其他内容)更改为随机值。我如何用C#(或任何其他语言)实现这一点 同样,AVG如何将数据移动到“
我希望我已经说清楚了,我认为这也取决于操作系统。您所说的是对原始磁盘扇区的访问。如果不使用一种叫做PInvoke的技术,C#就无法访问该级别,这种技术非常先进。这种访问需要详细了解各种磁盘布局结构,如NTFS和FAT32,以及分区方案,如GPT。如果不了解这些信息,您很可能会损坏您试图操作的驱动器,导致操作系统无法读取该驱动器。您所说的是对原始磁盘扇区的访问。如果不使用一种叫做PInvoke的技术,C#就无法访问该级别,这种技术非常先进。这种访问需要详细了解各种磁盘布局结构,如NTFS和FAT32,以及分区方案,如GPT。如果不了解这些信息,您很可能会损坏您试图操作的驱动器,导致操作系统无法读取该驱动器。出于性能原因,大多数现代操作系统不会擦除硬盘上的数据,而只是将已删除文件占用的空间标记为可用于新数据写入。因此,有时可以删除此标记并访问已删除的数据。要安全地擦除数据,必须覆盖该数据。因此,在C#中,您可以打开一个文件进行读写,并用随机二进制数据覆盖它,然后关闭该文件并刷新磁盘上的缓冲区。此操作可以重复几次,以确保数据丢失。这与主轴硬盘驱动器上的FAT16/32文件系统有关。对于大多数现代存储设备,没有通用的解决方案 如需进一步建议,请查看以下内容: