Veröffentlicht 31. Juli 200223 j Hallo, ich habe folgendes Problem. Kann ich irgendwie eine eindeutige Nummer (oder sonst was) erzeugen/ermitteln, die mir eine Datei eindeutig identifiziert? Mein Problem ist, dass ich einen bestimmten Bereich auf der Platte überwachen möchte. Wichtig ist mir, dass ich auch z.B. nach dem Verschieben einer Datei von einem Verzeichnis A in B diese trotzdem über die ID identifizieren kann. Ideal wäre daher auch, wenn sich die ID nicht durch Änderungen/Umbennenen ändern würde. Der Name allein reicht mir leider nicht aus. Hat jemand eine Idee?? Timo
31. Juli 200223 j Ja, Du kannst eine Hashfunktion (beispielsweise MD5) ueber den Dateiinhalt laufen lassen. Quellcodes sollten sich im Netz mit hilfe von Google zuhauf finden lassen. Nic
31. Juli 200223 j Wäre ganz schön aufwendig und ausserdem abhängig vom Inhalt. D.h. änderungen im Inhalt = anderer Hashwert = Datei kann nicht mehr nachverfolgt werden.... Timo
31. Juli 200223 j Du willst eine Datei wiedererkennen, obwohl sich der Name, die Position im Dateisystem und der Inhalt geändert haben können? Da bleibt m.M.n nichts übrig, anhand dessen Du die Datei noch eindeutig identifizieren könntest. Wie wärs mit einem selbstgestrickten Dateisystem?
31. Juli 200223 j Eben drum... Windows muss das doch intern auch machen. Und die Frage ist, kommt man an diese Info ran?! Timo
31. Juli 200223 j Also, wenn ich meine Profs richtig verstanden hatte (damals), dann funktionieren "normale" Dateisysteme so. Unter Unix ist es ja ähnlich. Ob man Windows zu den "normalen" Systemen zählen sollte, das kann ich nicht sagen
31. Juli 200223 j Mit GetFileInformationByHandle bekommt man Zugriff auf eine BY_HANDLE_FILE_INFORMATION-Struktur. Inwieweit die Struktur gefüllt werden kann, hängt vom Dateisystem ab. Diese Struktur hat mit nFileIndexLow und nFileIndexHigh einen 64Bit-Wert, der die Datei eindeutig identifiziert. Ich kann aber nicht sagen, ob dieser Wert sich nicht ändert, wenn man die Datei umbenennt/ändert/verschiebt. Käme auf einen Versuch an.
31. Juli 200223 j Ich würde mal vermuten, dass sich der Wert ändern, sobald man die Datei "anfasst" (also verschiebt oder kopiert). Laut http://msdn.microsoft.com/library/default.asp?url=/library/en-us/fileio/fileref_18j6.asp kann man diese beiden Eintraege verwenden, um zu ermitteln ob eine Anwendung ein und dieselbe Datei mehrmals geöffnet hat. Wenn die Dateien aber an unterschiedlichen Stellen im Filesystem liegen sind sie in diesem Sinne nicht mehr identisch. Nic
31. Juli 200223 j Fast... ich habs gerade mal getestet. Die Nummer für eine Datei ermittelt. Datei umbenannt, verschoben = Nummer bleibt immer gleich. Allerdings verändert sie sich, wenn man die Datei verändert. Schade, schade... Timo
31. Juli 200223 j Bin gerade am überlegen eine Datei anhand des Erstellungsdatums zu identifizieren. Laut Doku. sind das die Millisekunden seit 19xx. Mit einer Auflösung von 10 Millisekunden. Da sollten sich Dateien nicht die selbe Erzeugungszeiten haben :confused: Was haltet ihr davon, spricht da was dagegen??
31. Juli 200223 j Mich würde mal interessieren, wofür genau Du diese Eigenschaft benötigst. Üblicherweise ist es ja von Interesse, wenn die Datei (inhaltlich) manipuliert wurde. Du scheinst aber nach einer Möglichkeit zu suchen, eine Datei die irgendwann mal erstellt wurde (unabhängig von Veränderungen) wieder identifizieren zu können. Nic
1. August 200223 j Genau, ich hab das Problem, das ich zu einer Datei zusatzinformationen in einer/mehreren extra Datei(en) ablegen möchte, die ich immer der entsprechenden Datei zuordner können möchte. Allerdings kann es eben vorkommen, das die datei verschoben, umbenannt usw. wird. Der Inhalt interessiert mich quasi überhaupt nicht... Timo
Erstelle ein Konto oder melde dich an, um einen Kommentar zu schreiben.