AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Projekte Delphi-Unit zum Auslesen von Papierkorbstrukturen + Beispiel
Thema durchsuchen
Ansicht
Themen-Optionen

Delphi-Unit zum Auslesen von Papierkorbstrukturen + Beispiel

Ein Thema von blackdrake · begonnen am 15. Aug 2007
Antwort Antwort
blackdrake
Registriert seit: 21. Aug 2003
Hallo.

Aufgrund eines Projektes habe ich eine Funktion gebraucht, die von einer Papierkorbdatei den Originaldateinamen ausliest. Nach einigen Recherchen bin ich auf Publikationen und Forensik-Freeware gestoßen, die die Struktur von Papierkorbindexdateien analysieren bzw. beschreiben. Leider muss ich sagen, dass alle Publikationen, die ich gefunden habe, (teilweise fatal) fehlerhaft waren und die Analyseprogramme, die ich fand, nicht mit allen Typen von Papierkorbindexdateien (verschiedene Windows Versionen) zurecht kamen. Ich habe mich deswegen daran gemacht, verschiedene Papierkorbstrukturdateien zu analysieren (Windows 95 bis Vista) und eine Delphi-Unit inkl. Beispielprogramm zu schreiben. Natürlich will ich der Gemeinschaft etwas Gutes tun und mache diese Unit OpenSource. Die Betreiber oder Verfasser der Publikationen/Webseiten habe ich auch nebenbei auf einige Fehler hingewiesen. Microsoft macht natürlich keine Äußerung zu dem Aufbau von Windows Strukturdateien.

Bitte beachtet: Ich konnte keine Tests mit Windows CE, 2003/.NET oder NT machen. Wenn ihr ein solches System habt, würde ich furchtbar gerne euere Papierkorbstrukturdateien sehen, um sie analysieren zu können!

Es werden folgende Funktionen durch die Unit RecyclerFunctions bereitgestellt:

Delphi-Quellcode:
{$IFDEF DEL6UP}
function recycler_get_datetime(drive: char; fileid: string): tdatetime; overload;
function recycler_get_datetime(drive: char; user_sid: string; fileid: string): tdatetime; overload;
function recycler_get_datetime(infofile_or_recyclerfolder: string): tdatetime; overload;
function recycler_get_datetime(infofile_or_recyclerfolder: string; id: string): tdatetime; overload;
{$ENDIF}

function recycler_get_source_unicode(drive: char; fileid: string): WideString; overload;
function recycler_get_source_unicode(drive: char; user_sid: string; fileid: string): WideString; overload;
function recycler_get_source_unicode(infofile_or_recyclerfolder: string): WideString; overload;
function recycler_get_source_unicode(infofile_or_recyclerfolder: string; id: string): WideString; overload;

function recycler_get_source(drive: char; fileid: string): string; overload;
function recycler_get_source(drive: char; user_sid: string; fileid: string): string; overload;
function recycler_get_source(infofile_or_recyclerfolder: string): string; overload;
function recycler_get_source(infofile_or_recyclerfolder: string; id: string): string; overload;

function recycler_list_indexes(drive: char): TDynStringArray; overload;
function recycler_list_indexes(drive: char; user_sid: string): TDynStringArray; overload;
function recycler_list_indexes(infofile_or_recyclerfolder: string): TDynStringArray; overload;

function recycler_get_source_drive(drive: char; fileid: string): char; overload;
function recycler_get_source_drive(drive: char; user_sid: string; fileid: string): char; overload;
function recycler_get_source_drive(infofile_or_recyclerfolder: string): char; overload;
function recycler_get_source_drive(infofile_or_recyclerfolder: string; id: string): char; overload;

function recycler_original_size(drive: char; fileid: string): integer; overload;
function recycler_original_size(drive: char; user_sid: string; fileid: string): integer; overload;
function recycler_original_size(infofile_or_recyclerfolder: string): integer; overload;
function recycler_original_size(infofile_or_recyclerfolder: string; id: string): integer; overload;

function recycler_is_valid(drive: char): boolean; overload;
function recycler_is_valid(drive: char; user_sid: string): boolean; overload;
function recycler_is_valid(infofile_or_recyclerfolder: string): boolean; overload;

function recycler_current_filename(drive: char; fileid: string): string; overload;
function recycler_current_filename(drive: char; user_sid: string; fileid: string): string; overload;
function recycler_current_filename(infofile_or_recyclerfolder: string): string; overload;
function recycler_current_filename(infofile_or_recyclerfolder: string; id: string): string; overload;

function recycler_get_path(drive: char; user_sid: string; include_infofile: boolean; fileid: string): string; overload;
function recycler_get_path(drive: char; user_sid: string; include_infofile: boolean): string; overload;
function recycler_get_path(drive: char; include_infofile: boolean): string; overload;
function recycler_get_path(drive: char; user_sid: string): string; overload;
function recycler_get_path(drive: char): string; overload;

function recycler_current_filename_and_path(drive: char; user_sid: string; fileid: string): string; overload;
function recycler_current_filename_and_path(drive: char; fileid: string): string; overload;
function recycler_current_filename_and_path(infofile_or_recyclerfolder: string; id: string): string; overload;

function recycler_remove_item(drive: char; user_sid: string; fileid: string): boolean; overload;
function recycler_remove_item(drive: char; fileid: string): boolean; overload;
function recycler_remove_item(infofile_or_recyclerfolder: string; id: string): boolean; overload;

function recycler_get_all_recycler_drives(): TDynStringArray;

function recycler_empty(flags: cardinal): boolean; overload;
function recycler_empty(sound, progress, confirmation: boolean): boolean; overload;

function recycler_add_file_or_folder(file_or_folder: string; confirmation: boolean): boolean; overload;
function recycler_add_file_or_folder(file_or_folder: string): boolean; overload;
Benötigt mindestens Delphi 4, jedoch ist recycler_get_datetime() erst ab Delphi 6 freigeschaltet.

Erfolgreich getestet wurde das Programm mit Windows 95, 98, 2000, XP und Vista (hier jedoch nur die Struktudateien selbst).

Ich bedanke mich an die Delphi-Praxis-Nutzer, die mir bei so einigen Problemen geholfen haben bzw. von denen ich mir kleinere Funktionen abgeguckt habe (Quellen sind vermerkt). Außerdem danke ich SEBA, der mir die Strukturdateien des Windows Vista-Papierkorbes zugesandt hat.

Download hier: http://www.viathinksoft.de/index.php...ownload&id=124

Würde mich über Feedback freuen.

Gruß
blackdrake

Zu Teilen dieser Unit hat es bereits Threads gegeben. Der interessierte Leser kann sich hier weitere Informationen holen: Papierkorb INFO2: Löschungszeitpunkt ermitteln und Papierkorb INFO2: Originaldateiname & -pfad ermitteln

[edit=TBx]Links zu den beiden Diskussionen eingefügt Mfg, TBx[/edit]
 
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:59 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz