Autor Beitrag
schitho
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 288

XP Home SP2
D2005 Prof
BeitragVerfasst: 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 :oops: - 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:
  1. Ich verschiebe alle Dateien, die sich im Papierkorb befinden in einen eigenen Ordner
  2. 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 288

XP Home SP2
D2005 Prof
BeitragVerfasst: 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. :shock:

_________________
(Sorry! Leider ewiger Delphi-Neuling)
schitho Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 288

XP Home SP2
D2005 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 872

Win 8
Delphi 7
BeitragVerfasst: Mo 11.08.03 13:26 
Vielleicht hilft dir das hier ein wenig weiter.. :-)

_________________
Hasta La Victoria Siempre
schitho Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 288

XP Home SP2
D2005 Prof
BeitragVerfasst: 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. :bawling:

Kann sich mal wer von Euch das ansehen.

Danke

_________________
(Sorry! Leider ewiger Delphi-Neuling)
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 288

XP Home SP2
D2005 Prof
BeitragVerfasst: 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. 8)

Da ich ListView verwende, muss ich selbst für die Anzeige sorgen. Momentan steht dann dort DC0.xxx etc. Nicht gerade sehr aussagekräftig. :shock:

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. :cry:

_________________
(Sorry! Leider ewiger Delphi-Neuling)
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 288

XP Home SP2
D2005 Prof
BeitragVerfasst: Di 12.08.03 08:41 
Nein, Du redest nicht gegen eine Wand :wink:

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. :cry:

Trotzdem Danke für Eure Geduld.

_________________
(Sorry! Leider ewiger Delphi-Neuling)
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 288

XP Home SP2
D2005 Prof
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 449



BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 288

XP Home SP2
D2005 Prof
BeitragVerfasst: 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. :cry:

_________________
(Sorry! Leider ewiger Delphi-Neuling)
schitho Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 288

XP Home SP2
D2005 Prof
BeitragVerfasst: So 17.08.03 15:27 
Ich hab mich doch noch damit beschäftigt :D 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 :lol:

_________________
(Sorry! Leider ewiger Delphi-Neuling)
MathiasSimmack
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: So 17.08.03 15:37 
Warum is´ mir das nicht eingefallen ... :mrgreen: ...