Exlorerersatz (Directory Opus) merkt sich Metainformationen zu Dateien. Wie funktionert das programmiertechnisch?



  • Hi

    Directory Opus ist ein Dateimanager als Explorer-Ersatz unter Windows. Ich habe das Programm gerade installiert und spiele etwas damit rum.

    Jedenfalls kann man zu Dateien Metainformationen eintragen und ändern. Neben solchen, die zum Dateiformat gehören (z.B. Exif), auch formatunabhängige Informationen: Z.B. einen Kommentar und eine Bewertung (1-5 Sterne). Und das zu jeder beliebigen Datei.

    Solche Informationen müssen wohl in irgendeiner Datenbank des Programms abgelegt werden. (Wo sonst? Windows bietet nichts in der Richtung oder?)

    Das erstaunliche: Wenn man Opus beendet und die getagte Datei im Explorer verschiebt, umbenennt, ihren Inhalt ändert, etc. ... Opus danach neu startet und zur Datei navigiert, ist das Programm immer noch in der lage, die Metainformationen korrekt anzuzeigen.

    Wie schafft es diese Zuordnung?

    Ich kann mir nur erklären, dass ein Dienst läuft, der mit Hilfe eines FileSystemWatchers jede Dateioperation beobachtet und in die Datenbank (falls eine solche existiert) von Directory Opus einträgt. Allerdings habe ich bei der Installation angegeben, dass die Software beim booten nicht gestartet werden soll und ich konnte jetzt auch keinen entsprechenden Dienst ausfindig machen.

    Oder existiert unter Windows für jede Datei eine ID, die mir bisher nicht bekannt ist, und die sich nach der Dateierstellung niemals mehr ändern kann?

    Mich interessiert wie das ganze programmiertechnisch umgesetzt wurde. Vielleicht hat einer von euch eine Idee.

    Gruß



  • Chester schrieb:

    Oder existiert unter Windows für jede Datei eine ID, die mir bisher nicht bekannt ist, und die sich nach der Dateierstellung niemals mehr ändern kann?

    Ja, unter NTFS hat jede Datei eine für die Partition eindeutige ID. Wenn die innerhalb der Partition verschoben/umbenannt wird, kann man sie trotzdem eindeutig identifizieren. Auch jede Partition hat eine eindeutige ID, also wäre Partitions ID + Datei ID theoretisch global eindeutig, aber du kriegst halt nicht mit, wenn man eine Datei auf eine andere Partition verschiebt.
    Eine andere Möglichkeit ist das Änderungsjournal von NTFS, da kann man alle am Dateisystem vorgenommenen Änderungen abfragen, ohne einen Watcher Prozess zu benutzen. Dieses Journal kann man allerdings deaktivieren, dann kriegst du auch nicht mit, was sich getan hat.
    Ich vermute aber, dass es viel einfacher geht und Directory Opus einfach die Daten in den Alternate Datastreams von NTFS speichert.



  • Danke 👍
    Sehr aufschlussreich


Anmelden zum Antworten