如何以编程方式格式化未分配的空间?

时间:2009-04-29 16:44:27

标签: c# .net c++ format hard-drive

我正在寻找一个代码片段,它会以编程方式格式化给定驱动器上的未分配空间。

我理想地寻找.net代码(VB.NET C#)或C ++。

非常感谢

3 个答案:

答案 0 :(得分:2)

最好的选择似乎是使用WMI。特别是,您需要查看Format类的Win32_Volume方法。

您可以使用Win32 API的SHFormatDrive功能。这可能是更简单的选项(特别是在C ++中),但我不确定该功能与WMI方法的比较。 编辑:正如M. Jahedbozorgan所指出的,这似乎打开了Explorer shell对话框来格式化驱动器。

第三个选项是从代码运行命令行format.exe(然后从stdout流中读取),但这显然不是一个非常好的解决方案。

MSDN论坛this thread中提供了其他建议。

答案 1 :(得分:1)

创建一个文件,填满整个驱动器,然后将随机数据写入其中,然后冲洗它,然后关闭它。

第一步可能是跨多个配置可靠地做到最难的(例如,NTFS压缩卷或每用户配额)。

或者从命令行使用“cipher / w”。

答案 2 :(得分:0)

看起来Windows只提供了一种格式化整个卷的方法,而不仅仅是未分配的空间。

因此,如果我理解你的问题,你可以在驱动器的剩余空间中创建一个分区,然后格式化该新分区。

您将需要使用PInvoke和WMI的Win32_Volume。