2009-04-29 90 views
0

我正在尋找一個代碼片段,將程序給定的驅動器上格式化未分配的空間。如何以編程方式格式化未分配的空間?

我非常想找.net代碼(VB.NET C#)或C++。

非常感謝

+1

爲什麼你會格式化未分配的空間?或者你是否試圖從未分配的空間創建一個不屬於任何驅動器的分區? – 2009-04-29 18:36:04

回答

2

最好的選擇似乎是使用WMI。特別是,您需要查看Win32_Volume類的Format方法。

您可以改爲使用Win32 API的SHFormatDrive函數。這可能是更簡單的選項(尤其是在C++中),但我不確定功能與WMI方法的比較。 編輯:作爲M. Jahedbozorgan指出,這似乎打開資源管理器外殼對話框格式化驅動器。

第三個選擇是從代碼運行命令行format.exe(然後從stdout流中讀取),但這顯然不是一個很好的解決方案。

其他建議在MSDN論壇上給出this thread

+0

Windows XP及更早版本:Win32_Volume類不可用。 SHFormatDrive打開Shell的格式對話框。 – CSharper 2009-04-30 15:14:33

0

它看起來像Windows只提供格式化整個卷的方法,而不僅僅是未分配的空間。所以,如果我理解你的問題是正確的,你可以在驅動器的剩餘空間中創建一個分區,然後格式化該新分區。

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

1

創建一個填充整個驅動器的文件,然後將隨機數據寫入它,然後刷新它,然後關閉它。

第一步可能是跨多個配置(例如,NTFS壓縮卷或每個用戶配額)可靠地執行的最難的步驟。

或者使用命令行「密碼/ W」。

相關問題