ďťż

Ładny brzuch

:huh:

Błagam o jak najszybszą pomoc!!!
Jak na stałe usunąć plik (bez możliwości odzyskania) w Windowsie 98/
ME/2000/XP?

:frusty:
Użytkownik Danko12345 edytował ten post 09 luty 2005, 13:15


Jak skasować plik na stałe?
hmm..... :rolleyes:
Problem polega nie na samym kasowaniu lecz na odnalezieniu miejsca w jakim plik znajdował się na dysku po usunięciu. Jeżeli znamy to miejsce to należało by je nadpisać jakimiś innymi danymi. To jest najskuteczniejszy sposób na usuwanie plików na stałe.
Jak usuwać pliki - FAQ....!

DeleteFile('nazwa');

//*****************************************************************************\\ //*****************Program kasuje wskazany plik nadpisujac go******************\\ //******************losowymi znakami, co uniemożliwia jego odzyskanie**********\\ //*****************************************************************************\\ //****************************Autor: Marcin Antosz "Cinek"*********************\\ //*************************e-mail: marcin.antosz@interia.pl********************\\ //***********************************gg: 1198794*******************************\\ //*****************************************************************************\\ unit MainFrmU; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs, Menus, Buttons, StdCtrls; type  TForm1 = class(TForm)    Edit1: TEdit;    OpenDialog1: TOpenDialog;    SpeedButton1: TSpeedButton;    BitBtn1: TBitBtn;    Label1: TLabel;    Label2: TLabel;    procedure FormCreate(Sender: TObject);    procedure BitBtn1Click(Sender: TObject);    procedure SpeedButton1Click(Sender: TObject);    procedure Label2Click(Sender: TObject);  private    { Private declarations }  public    { Public declarations }    procedure KasujPlik(Plik: string); //kod procedury pochodzi chyba z Torry.net  end; var  Form1: TForm1; implementation procedure TForm1.KasujPlik(Plik: string); var  bufor: array [0..4095] of Byte;  max, n: LongInt;  i: Integer;  fs: TFileStream;  procedure RandomizeBufor;  var    i: Integer;  begin    for i := Low(bufor) to High(bufor) do      bufor[i] := Random(256);  end; begin  fs := TFilestream.Create(Plik, fmOpenReadWrite or fmShareExclusive);  try    for i := 1 to 3 do    begin      RandomizeBufor;      max := fs.Size;      fs.Position := 0;      while max > 0 do      begin        if max > SizeOf(bufor) then          n := SizeOf(bufor)        else          n := max;        fs.Write(Bufor, n);        max := max - n;      end;      FlushFileBuffers(fs.Handle);    end;  finally    fs.Free;  end;  Deletefile(Plik);  Label1.Caption := 'OK!'; end; {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin  Application.ShowHint := True; end; procedure TForm1.BitBtn1Click(Sender: TObject); var Odp : Integer; begin Form1.Enabled := false; Odp := MessageBox(0, 'Czy na pewno chcesz całkowicie skasować wybrany plik?' + #13 + 'Jego odzyskanie nie będzie możliwe!!!', 'Potrzebne potwierdzenie!', MB_YesNo + MB_IconQuestion); if Odp = ID_Yes then begin Form1.Enabled := true; Label1.Caption :='Kasuje!'; BitBtn1.Enabled := false; Application.ProcessMessages; try KasujPlik(OpenDialog1.FileName); MessageBox(0, 'Plik został skasowany pomyślnie!', 'Operacja zakończona sukcesem', MB_Ok + MB_IconInformation); BitBtn1.Enabled := true; except MessageBox(0, 'Podaj prawidłową ścieżkę do pliku!!!', 'Błąd', MB_Ok + MB_Iconstop); BitBtn1.Enabled := true; Label1.Caption := 'Podaj prawidłową ścieżkę do pliku'; end; end else begin Form1.Enabled := true; exit; end;         end; procedure TForm1.SpeedButton1Click(Sender: TObject); begin try OPenDIalog1.Execute; edit1.Text := openDialog1.FileName; except null; end;    end; procedure TForm1.Label2Click(Sender: TObject); begin MessageBox(0, 'Program służy do całkowitego kasowania danych z dysku.' +#13 + 'Miejsce po pliku jest nadpisywane losowym ciągiem znaków.' + #13 + '--------------------------------------------------------------------------' + #13 + 'Autor: Marcin Antosz "Cinek"' + #13 + 'e-mail:marcin.antosz@interia.pl' + #13 + 'gadu-gadu: 1198794' + #13 + 'http://www.cinek.glt.pl' + #13 +'Jeżeli korzystasz z tego programu wyślij maila do autora!' +#13 + 'Dzięki temu będę wiedział, czy musze ulepszać program, czy też nikt z niego nie korzysta', 'O programie', MB_OK + MB_IconInformation); end; end.



Całkiem niezły programik. Sprawę załatwia FlushFileBuffers a reszta to standardowa obługa strumieni.

Trzeba by było jeszcze poprawić procke:
procedure RandomizeBufor; var   i: Integer; begin   for i := Low(bufor) to High(bufor) do     bufor[i] := Random(255); { 255 zamiast 256 } end;
Poza tym innych uchybień się nie dpoatrzyłem.
Użytkownik mickers edytował ten post 09 luty 2005, 15:13
A ja myślę, że powinno zostać Random(256), wtedy będzie losowana liczba z zakresu 0-255, a nie jak napisał mickers 0-254.

ja już sam nie wiem :blink:
Użytkownik Bełdzio edytował ten post 09 luty 2005, 16:56
A mnie się zawsze wydawało że od 0 do 255 to Random(255) ale co ja tam wiem :D

Random(255) wylosuje jedną z 255 liczb, czyli <0, 254>
Random(256) wylosuje jedną z 256 liczb, czyli <0, 255>
:P
A tak poza tym, gdyby program losował liczby z przedziału <0, 100> to też by dobrze działał, nie ?

teoretycznie tak :)

Trza by spróbować :D

A nawet praktycznie "tak". Poza tym po co zapisywać pliki losowymi znakami, skoro można np. zerami, lub innymi?

A wie ktos moze jak czyscic pusta przestrzen na dysku? Tzn. jak usuwac dane po juz skasowanych plikach?

Proponuję KOŃCZYĆ TEMAT już dość zostało napisane - po mojemu :)

Po mojemu możnaby jeszcze rozwiązać wątek, który napomknął migajek


A wie ktos moze jak czyscic pusta przestrzen na dysku? Tzn. jak usuwac dane po juz skasowanych plikach? Można w assemblerze napisać program znajdujący miejsca na dysku nie zajmowane przez pliki i zapisać je zerami. Oczywiście nie w windowsie...


Można w assemblerze napisać program znajdujący miejsca na dysku nie zajmowane przez pliki i zapisać je zerami. Oczywiście nie w windowsie...

Chociaż niekoniecznie, pamiętam jak kiedyś miałem Norton Utilities-a 2001, był program do "Wipe Free Space" :)



Nom. Ale nie sadze zeby to kozystalo z jakiejs funkcji WinAPI

O to na pewno nie, myślę, że poprzez sterownik.

Wielkie dzięki!!!! :lol: :lol: :lol:

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •