Ĺ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
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: