質問

C#でフリースペースに書き込むことができるかどうか疑問に思っていましたか?私は次のようなことを意味します FreeSpace.WriteAllBytes() あるいはシュレッダーアプリのようなものでしょうか?

どうすればそうできるでしょうか?

役に立ちましたか?

解決

ハードドライブ上の利用可能な空き領域をすべて上書きするだけの場合は、 GetDiskFreeSpaceEx 利用可能なバイト数を判断し、そのサイズのファイルを書き込む (または複数のファイルに分散する) ための API。

C# の P/Invoke:

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

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

編集: System.IO.DriveInfo クラスについては知りませんでしたが、前述の API を使用するよりも簡単な可能性があります。

他のヒント

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

注意してくださいいくつかのファイルシステムがあなたの最大ファイルサイズを制限されます。

これは<のhref =「http://msdn.microsoft.com/en-us/library/system.management.aspx」のrel =経て、ドライブ(C#の)の空き容量を取得するために私のために働いています"nofollowをnoreferrer"> System.Management の

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

これは、(ファイルシステムのクラスタサイズの倍数を使用して)すべてのスペースを埋めるためにSystem.Guid.NewGuid(経由という名前のファイル)を書くことができます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top