2009-04-29 15 views
0

私は、指定されたドライブの未割り当て領域をプログラムでフォーマットするコードスニペットを探しています。未割り当ての領域をプログラムでフォーマットする方法

私は理想的には、.netコード(VB.NET C#)またはC++を探しています。

多くの感謝

+1

なぜ未割り当て領域をフォーマットしますか?またはどのドライブにも属していない未割り当て領域からパーティションを作成しようとしていますか? –

答えて

2

ベストオプションはWMIを使用するようです。特に、Win32_VolumeクラスのFormatメソッドを調べる必要があります。

代わりに、Win32 APIのSHFormatDrive関数を使用できます。これは、WMIメソッドと機能を比較する方法がわかりませんが、(C++の場合は)より簡単なオプションかもしれません。 編集: M. Jahedbozorganが指摘するように、これはエクスプローラのシェルダイアログを開いてドライブをフォーマットするようです。

3番目の方法は、コードからコマンドラインformat.exeを実行して(そしてstdoutストリームから読み込む)、これは非常に良い解決策ではありません。

その他の提案は、MSDNフォーラムのthis threadに記載されています。

+0

Windows XP以前:Win32_Volumeクラスは使用できません。 SHFormatDriveはシェルの書式設定ダイアログを開きます。 – CSharper

+0

ええ、あなたはSHFormatDriveについて正しく見えます。 Win32_VolumeとWinXPについては確かですか? – Noldorin

+0

M. Jahedbozorganが正しいです - MSDNのWin32_Volumeドキュメントでは、xp以前のクラスでは使用できないことが記載されています – roo

0

Windowsでは、割り当てられていない領域だけでなく、ボリューム全体をフォーマットする方法しかないようです。

あなたの質問が正しいと分かったら、ドライブの残りのスペースにパーティションを作成し、その新しいパーティションをフォーマットすることができます。

PInvokeとWMIのWin32_Volumeを使用します。

1

ドライブ全体をいっぱいにするファイルを作成し、ランダムなデータを書き込んでからフラッシュしてから閉じます。

おそらく、複数の構成(NTFS圧縮ボリュームやユーザーごとのクォータなど)で信頼性の高い方法を実行するのが最も難しい場合があります。

または、コマンドラインから "cipher/w"を使用してください。

関連する問題