![]() |
Beliebig große leere Dateien erzeugen
Hallo :hi:,
ich möchte eine Datei erzeugen, die den gesammten freien Platz auf der Festplatte ausfüllt. Dabei soll, wenn man die Datei wieder löscht nur Nullen auf der Festplatte(Hardware) zurückbleiben. Die Datei muss keine spezielle Endung haben. Kann mir da einer weiterhelfen? Oder kann man vielleicht auch anders den gesammten freien Speicherplatz mit Nullen auffüllen? Wenn das zu unklar ist ist bitte fragen. ;) MfG freak |
Re: Beliebig große leere Dateien erzeugen
Hallo Christian,
herausfinden wieviel Platz verfügbar ist: GetDiskFreeSpace Ich habe nie versucht mit TFileStream eine Datei > 2/4 GB zu erzeugen, weiß also nicht ob dies funktionieren wird. Ansonsten createFile verwenden und mit writeFile solange schreiben bis die gewünschte Größe erreicht ist. Beachten solltest du, dass ein einfaches setzen der Größe nicht ausreicht, um wirklich Nullen auf die Festplatte zu schreiben. Die Win32API-Hilfe sagt nämlich dazu Zitat:
Sie dient eher dem Dateisystem die Datei im voraus möglichst optimal anzuordnen. Somit bräuchtest du den freien Speicher eigentlich garnicht ermitteln - du schreibst einfach so lange bis es nicht mehr geht. Beachte aber die Maximalgrößen für Dateien der unterschiedlichen Systeme. Ich ahne übrigens was du vor hast, dir soll versichert sein, dass ein einmaliges Überschreiben ein professionelles Labor nicht davon abhalten wird, deine Daten zu rekonstruieren. Ein einfaches Undelete-Programm dürftest du allerdings aus dem Tritt bringen. Dennoch solltest du dir überlegen, ob du an die Sache nicht doch anders rangehst, denn eine bis auf das letzte Byte gefüllte HD dürfte dir so ziemlich jedes OS und Programm verübeln. Ein globaler Funktionshook auf deleteFile/setEndOfFile wäre imho viel schöner, du könntest dann alle gelöschten Files in eine Liste aufnehmen und später wenn die HD idle ist mehrfach mit 1 und 0 überschreiben. ![]() |
Re: Beliebig große leere Dateien erzeugen
Hallo Vjay :hi:,
danke für die schnelle Antwort. Zitat:
MfG freak |
Re: Beliebig große leere Dateien erzeugen
:-P
Arbeitest du mit VM-Ware? Dort gibt es jedenfalls die Shrink-Funktion, diese kümmert sich auch darum, daß die Dateien an den Anfang der virtuellen Platte verschoben werden. |
Re: Beliebig große leere Dateien erzeugen
Zitat:
Ich bin leicht verwirrt. :stupid: Das Programm ist ja nicht direkt für mich. Ich kenne mich mit VM eigentlich nicht so gut aus. Ich wurde halt darum gebeten. Wenn es natürlich eine einfache schon vorhandene Funktionalität gibt wäre das auch ok. ;) MfG freak |
Re: Beliebig große leere Dateien erzeugen
Ok, ich weiß jetzt wie ich den freien Speicher bekomme. Wie kann ich jetzt alle Bits (Heißen die so? :gruebel: ) auf Null setzen? Was auch schön wäre, wenn man das noch prüfen könnte, ob die Null sind (Ist aber nur optional :mrgreen: ).
@Vjay: Mein Kollege meint das Verschieben alleine reicht nicht. MfG freak |
Re: Beliebig große leere Dateien erzeugen
Arbeitest du/er mit dynamischen oder statischen Containern? In den VM-Ware Tools die auf dem Guest-System installiert sind, bzw. wenn du in die Eigenschaften der VM gehst und die HD anklickst.
Zitat:
Zitat:
|
Re: Beliebig große leere Dateien erzeugen
Ich erzeuge eine Datei mit:
Delphi-Quellcode:
und schreibe dann mit:
AssignFile(f, AFileName);
try Rewrite(f); finally CloseFile(f); end;
Delphi-Quellcode:
Geht das Schreiben irgendwie schneller?
var
lBuffer: array [0..524287] of Byte; begin ... lFileStream.WriteBuffer(lBuffer, SizeOf(lBuffer)); MfG freak |
Re: Beliebig große leere Dateien erzeugen
TFileStream wäre vielleicht eine Hilfe zum Erzeugen von Dateien, die keine besondere Bedeutung haben.
|
Re: Beliebig große leere Dateien erzeugen
Zitat:
Delphi-Quellcode:
:| Das mach ich schon.
lFileStream := TFileStream.Create(AFileName, fmOpenWrite);
MfG freak |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz