0

C#で空き領域に書き込むことができるかどうか疑問に思っていましたか? FreeSpace.WriteAllBytes()いくつかのシュレッダーアプリが行うことのようなものを意味しますか?

どうすればそうできますか?

4

3 に答える 3

2

このような特定の機能は C# には組み込まれていませんが、ファイルを開き、ディスクがいっぱいになるまでバイト (0) を書き込むことで、自分で簡単に作成できます。

一部のファイル システムでは、最大ファイル サイズが制限されていることに注意してください。

于 2009-12-29T06:44:44.430 に答える
0

ハード ドライブで利用可能なすべての空き領域を単に上書きすることが意図されている場合は、GetDiskFreeSpaceExAPI を使用して利用可能なバイト数を判断し、そのサイズのファイルを書き込む (または複数のファイルに分散させる) ことができます。

P/C# の呼び出し:

[DllImport("kernel32")]
public static extern int GetDiskFreeSpaceExW(string dir, ref ulong freeBytesAvailable,
    ref ulong totalNumBytes, ref ulong totalFreeBytes);

興味がある場合は、System.Random のようなクラスを使用して、バイトの配列にランダムな値を書き込むことができます。

編集: System.IO.DriveInfo クラスを認識していませんでした。これは、前述の API を使用するよりも簡単な場合があります。

于 2009-12-29T08:52:12.500 に答える
0

これは、 System.Managementを介してドライブ (C#) の空き容量を取得するのに役立ちました。

ManagementObject di = new ManagementObject("win32_logicaldisk.deviceid=\"C:\"");
di.Get();
UInt64 freeSpace = (UInt64)di["FreeSpace"]; //in bytes

System.Guid.NewGuid() で名前を付けたファイルを書き込んで、すべてのスペースを埋めることができるようになりました (ファイルシステムのクラスター サイズの倍数を使用します)。

于 2009-12-29T09:41:34.357 に答える