Autor |
Beitrag |
schitho
      
Beiträge: 288
XP Home SP2
D2005 Prof
|
Verfasst: Mo 11.08.03 10:52
Hi,
da ich weder ein Windows- noch ein Delphi-Experte bin, hab ich - eine hoffentlich nicht zu dämliche  - Frage: ich möchte Dateien, die sich im Papierkorb befinden shreddern (also den Inhalt mehrfach überschreiben).
Da dies scheinbar nicht so einfach geht, hab ich folgende Idee:
- Ich verschiebe alle Dateien, die sich im Papierkorb befinden in einen eigenen Ordner
- In diesem Ordner shredder ich dann die Dateien.
Nun meine Frage: Wie kann ich Dateien aus dem Papierkorb in einen anderen Ordner verschieben? Wie ich Datei dann shredder weiß ich zwischenzeitlich schon *stolz* Oder gibt es doch eine Möglichkeit "direkt" im Papierkorb zu shreddern?
_________________ (Sorry! Leider ewiger Delphi-Neuling)
|
|
schitho 
      
Beiträge: 288
XP Home SP2
D2005 Prof
|
Verfasst: Mo 11.08.03 12:08
Hab wieder was dazu gelernt:
Die Dateien die sich im Papierkorb befinden, werden in Wirklichkeit in den Ordner 'recyled' im jeweiligen Laufwerk verschoben. Außerdem werden die Dateien umbenannt in DC0.xxx , DC1.xxx oder DD0.xxx usw.
Das Problem ist nur, dass Windows den richtigen Dateienamen und den ursprünglichen Pfad der Datei irgendwo speichert bzw. versteckt.
Gibt es da irgendeine Möglichkeit, um an den ursprünglichen Dateinamen zu kommen?
Schaut ja blöd aus, wenn in meinem Listview nur DC0.xxx etc. steht. 
_________________ (Sorry! Leider ewiger Delphi-Neuling)
|
|
schitho 
      
Beiträge: 288
XP Home SP2
D2005 Prof
|
Verfasst: Mo 11.08.03 12:41
Ich hab noch etwas herausgefunden:
Windows speichert offensichtlich die Info zum Papierkorb in einer verstecketen Datei mit den Namen INFO2 (zumindest unter w98). Kennt zufällig jemand die Struktur dieser Datei???? 
_________________ (Sorry! Leider ewiger Delphi-Neuling)
|
|
Terra23
      
Beiträge: 872
Win 8
Delphi 7
|
Verfasst: Mo 11.08.03 13:26
Vielleicht hilft dir das hier ein wenig weiter.. 
_________________ Hasta La Victoria Siempre
|
|
schitho 
      
Beiträge: 288
XP Home SP2
D2005 Prof
|
Verfasst: Mo 11.08.03 14:28
Lieder nicht, weil ich die Dateien in meinem eigenen Fenster anzeigen möchte/muss.
Bei Google bin ich auf einen Beitrag gestoßen, wonach es mit SHGetSpecialFolderLocation gehen sollte.
Aber
1.) ist mein english besch....
2.) versteh ich den Beitrag nicht.
Kann sich mal wer von Euch das ansehen.
Danke
_________________ (Sorry! Leider ewiger Delphi-Neuling)
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Mo 11.08.03 18:16
Na du bist ja lustig. In dem Beitrag, auf den Terra23 linkt, wird auch SHGetSpecialFolderLocation benutzt.
Ich habe auch mal ge-googelt und mehrere Beiträge gefunden. Eine Möglichkeit wäre, dass du das Format der INFO2 ermittelst und diese zum Auslesen benutzt. Davon würde ich aber abraten, weil sich dieses Format von Windows-Version zu Windows-Version unterscheiden kann.
Wenn du auf die Anzeige der Dateien verzichten kannst (könntest), dann such dir einfach mit dem oben gelinkten Beitrag den Ordner des Papierkorbes, spring rein und überschreibe alle Dateien, die nicht versteckt sind. (Dadurch lässt du die INFO2 und die "desktop.ini" in Ruhe.) Wenn du mit dem Überschreiben fertig bist, dann leere den Papierkorb mit der API-Funktion SHEmptyRecycleBin. Fertig.
Ansonsten: falls du Delphi 6 oder höher hast, dann schau dir mal die Komponente "ShellListView" an. IMHO müsste die SLV bei der Auswahl des Papierkorbes als Ordner den korrekten Inhalt (wie aus dem Explorer gewohnt) anzeigen.
Gruß.
|
|
schitho 
      
Beiträge: 288
XP Home SP2
D2005 Prof
|
Verfasst: Mo 11.08.03 20:30
Auf die Anzeige wollte ich eigentlich nicht verzichten, weil der Anwender auch im Papierkorb die Möglichkeit haben sollte auszuwählen, welche Datei überschrieben werden soll.
Da ich ListView verwende, muss ich selbst für die Anzeige sorgen. Momentan steht dann dort DC0.xxx etc. Nicht gerade sehr aussagekräftig.
Irgenwie muss es doch möglich sein, an den eigentlichen Namen zu kommen, ohne die Info Datei händisch auszulesen, oder?
Bisher hab ich nur Lösungen gefunden, aus der ich die Anzahl der im Papierkorb vorhandenen Dateien und deren Große feststellen kann. 
_________________ (Sorry! Leider ewiger Delphi-Neuling)
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 12.08.03 06:36
Ich habe das Gefühl, ich rede gegen eine Wand.
Es wird sicher Funktionen geben, mit denen man die Namen ermitteln kann. Allerdings hat Microsoft die dann nicht dokumentiert, so dass du tatsächlich selbst auf die INFO2 zugreifen und diese auslesen müsstest. Da sich das Format aber in jeder Windows-Version unterscheiden könnte, halte ich von diesem Ansatz nicht viel.
Weil du aber (laut deiner Info) Delphi 7 hast, steht dir in deiner Komponentenpalette die ShellListView zur Verfügung. Diese basiert IMHO auf dem Interface, das auch der Explorer benutzt, und darum müsstest du (Vermutung ohne Gewähr, weil ich mit D5 arbeite) auch die echten Dateinamen im Papierkorb sehen.
|
|
schitho 
      
Beiträge: 288
XP Home SP2
D2005 Prof
|
Verfasst: Di 12.08.03 08:41
Nein, Du redest nicht gegen eine Wand
ShellListView hab ich ursprünglich eh verwendet. Da es jedoch recht unfelxibel war, bin ich auf ShellView umgestiegen. Daher scheidet ShellListView leider aus.
Ich hab halt einfach nach einer Lösung gesucht, die auch mit ListView funktioniert. Da es scheinbar keine gibt (außer die unsichere Methode die Info-Datei händisch zu zerlegen) werde ich es wohl ganz lassen.
Trotzdem Danke für Eure Geduld.
_________________ (Sorry! Leider ewiger Delphi-Neuling)
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: Di 12.08.03 09:29
Da ich nur D5 habe, wo es ShellListView und -TreeView noch nicht gibt, wäre für mich jetzt interessant, warum beides unflexibel ist. Das meine ich ernst, ich will dich also nicht verar****.
Könntest du mal erklären, warum das in deinem Fall nicht geht?
Danke.
|
|
schitho 
      
Beiträge: 288
XP Home SP2
D2005 Prof
|
Verfasst: Di 12.08.03 09:37
Hi,
mit ShellListView hab ich weder eine Sortierung zusammengebracht noch eine Filterung (also z.B. nur *.doc).
_________________ (Sorry! Leider ewiger Delphi-Neuling)
|
|
recall
      
Beiträge: 449
|
Verfasst: Di 12.08.03 18:16
Hallo,
Ich will euch ja nicht die Freude verderben, aber ich konnte mir partout nicht vorstellen, dass die Formate bis XP gleich sein sollen...
Habe mir das bei XP angeguckt => Oooojemine !
Da hast du viieeel Arbeit. Und dann noch ein Hindernis:
Habe son Norton-Tool installiert, das übernimmt die Steuerung des Papierkorbs und hat auch die Formate geändert
Achso, NT hat was gegen das Eingreifen auf die Papierkorb-Dateien.
Viele Grüsse.
|
|
schitho 
      
Beiträge: 288
XP Home SP2
D2005 Prof
|
Verfasst: Do 14.08.03 23:53
Du hast recht: Der Papierkorb dürfte je nach Windows-Version anders funktionieren.
Nachdem ich nun mal waghalsig war und einfach den Recycle-Ordner gelöscht habe, meckert Windows nun sobald man eine Datei in den Papierkorb gibt und die Datei mit Papierkorb endgültig löschen möchte.
Unter W2000 hatte ich dann noch andere Probleme, so dass ich wohl die Finger davon lassen werde. 
_________________ (Sorry! Leider ewiger Delphi-Neuling)
|
|
schitho 
      
Beiträge: 288
XP Home SP2
D2005 Prof
|
Verfasst: So 17.08.03 15:27
Ich hab mich doch noch damit beschäftigt  und folgende Lösung gefunden:
1.) Ich überschreibe im Papierkorb (im Ordner recycled unter FAT32 bzw. im Ordner Reycler unter NTFS) die darin enthaltenen Dateien (ausgenommen info2 und desktop.ini) ohne die Dateien zu löschen
2.) Dann leere ich mittels SHEmptyRecycleBin den Papierkorb.
Funktioniert unter W98 und 2000 bisher problemlos 
_________________ (Sorry! Leider ewiger Delphi-Neuling)
|
|
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1
|
Verfasst: So 17.08.03 15:37
Warum is´ mir das nicht eingefallen ...  ...
|
|