|
![]() |
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:
Benötigt mindestens Delphi 4, jedoch ist recycler_get_datetime() erst ab Delphi 6 freigeschaltet.
{$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; 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: ![]() 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: ![]() ![]() [edit=TBx]Links zu den beiden Diskussionen eingefügt Mfg, TBx[/edit] |
Ansicht |
![]() |
![]() |
![]() |
ForumregelnEs 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
|
|
Nützliche Links |
Heutige Beiträge |
Sitemap |
Suchen |
Code-Library |
Wer ist online |
Alle Foren als gelesen markieren |
Gehe zu... |
LinkBack |
![]() |
![]() |