Autor Beitrag
raven
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 54



BeitragVerfasst: Mi 12.02.03 20:57 
hi leutz

ich arbeite gerade an einem projekt namens proerase mit dem man daten für immer (also sicher) löschen kann ... die daten werden mit nullen und zufallszahlen überschrieben (es gibt verschiedene sicherheitsstufen) und dann erst gelöscht ...

Nun möchte ich eine funktion einbauen mit der man den gesammten papierkorb inhalt auch auf diese art und weise löschen kann ... ist es also irgendwie möglich alle dateien die sich im paoierkorb befinden zu meiner listview hinzuzufügen?

wäre schön wenn mir jemand helfen könnte

danke
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Mi 12.02.03 21:29 
Der Papierkorb ist, IMHO, nur ein virtueller Ordner, der aber lediglich auf die vorhandenen, versteckten Verzeichnisse "Recycled" verweist. Ich schrieb "Verzeichnisse" (Plural), weil es -abhängig von der Anzahl der Festplatten/Partitionen!- mehrere davon geben kann.
Du müsstest mal im DOS-Modus gucken, ob die Dateien im Papierkorb alle in einem "Recycled"-Ordner stecken, bzw. ob jeder Ordner den selben Inhalt hat, oder ob sich die gelöschten Dateien entsprechend verteilen.

Im letzteren Fall wird dir wahrscheinlich nichts weiter übrig bleiben, als alle Festplatten nach diesen Ordnern abzugrasen und dann entsprechend die Dateien darin zu löschen. Und sag jetzt bitte nicht: "ich habe doch nur Laufwerk C:\." :wink: Du willst doch sicher, dass das Programm auch auf anderen Rechnern funktioniert. Und ich habe z.B. mehr als nur eine Partition.

Ansonsten gibt´s die Shell-Funktion SHEmptyRecycleBin (s. MSDN, PSDK). Wenn du anstelle des Root-Path (2. Parameter) nil angibst, wird der Papierkorb geleert - aber eben nur auf die normale Art.
In neueren Delphi-Versionen ist die hoffentlich implementiert. Besitzer von Delphi5 und früher gucken leider in die Röhre und müssen sich die Funktion selbst heraussuchen:

ausblenden volle Höhe Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
interface

(********************************
  Recycle.Bin
********************************)
type
  {$EXTERNALSYM _SHQUERYRBINFO}
  _SHQUERYRBINFO =
    packed record
      cbSize  : DWORD;
      i64Size : int64;
      i64NumItems : int64;
    end;
  {$EXTERNALSYM TSHQueryRBInfo}
  TSHQueryRBInfo = _SHQUERYRBINFO;
  {$EXTERNALSYM PSHQueryRBInfo}
  PSHQueryRBInfo = ^TSHQueryRBInfo;

const
  {$EXTERNALSYM SHERB_NOCONFIRMATION}
  SHERB_NOCONFIRMATION    = $00000001;
  {$EXTERNALSYM SHERB_NOPROGRESSUI}
  SHERB_NOPROGRESSUI      = $00000002;
  {$EXTERNALSYM SHERB_NOSOUND}
  SHERB_NOSOUND           = $00000004;

  {$EXTERNALSYM SHQueryRecycleBinA}
  function SHQueryRecycleBinA(pszRootPath: LPCTSTR; var pSHQueryRBInfo: TSHQueryRBInfo): HRESULT; stdcall;
  {$EXTERNALSYM SHQueryRecycleBinW}
  function SHQueryRecycleBinW(pszRootPath: LPWSTR; var pSHQueryRBInfo: TSHQueryRBInfo): HRESULT; stdcall;
  {$EXTERNALSYM SHQueryRecycleBin}
  function SHQueryRecycleBin(pszRootPath: LPCTSTR; var pSHQueryRBInfo: TSHQueryRBInfo): HRESULT; stdcall;
  {$EXTERNALSYM SHEmptyRecycleBinA}
  function SHEmptyRecycleBinA(hwnd: HWND; pszRootPath: LPCTSTR; dwFlags: dword): HRESULT; stdcall;
  {$EXTERNALSYM SHEmptyRecycleBinW}
  function SHEmptyRecycleBinW(hwnd: HWND; pszRootPath: LPWSTR; dwFlags: dword): HRESULT; stdcall;
  {$EXTERNALSYM SHEmptyRecycleBin}
  function SHEmptyRecycleBin(hwnd: HWND; pszRootPath: LPCTSTR; dwFlags: dword): HRESULT; stdcall;

implementation

const
  shell32 = 'shell32.dll';

function SHQueryRecycleBinA; external shell32 name 'SHQueryRecycleBinA';
function SHQueryRecycleBinW; external shell32 name 'SHQueryRecycleBinW';
function SHQueryRecycleBin; external shell32 name 'SHQueryRecycleBinA';
function SHEmptyRecycleBinA; external shell32 name 'SHEmptyRecycleBinA';
function SHEmptyRecycleBinW; external shell32 name 'SHEmptyRecycleBinW';
function SHEmptyRecycleBin; external shell32 name 'SHEmptyRecycleBinA';