Kommentare in NTFS-Metadaten von Files schreiben - wie geht das ?

  • Windows oder besser NTFS läßt ja edliches an Dateikommentaren zu. So kann man an eine simple test.txt ja einiges "anhängen".

    1.png


    Gibt es eine Möglich keit diese Felder via Autoit anzusprechen?

    Danke

    Gruß


    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Möglicherweise bin ich gedanklich schon im Wochenende ;) :

    Falls ich mich recht erinnere, werden die Eigenschaften nicht für alle Dateitypen in der Datei selbst gespeichert.

    Bei .txt-Dateien werden sie z.B. in die Master File Table (MFT) geschrieben. Daher lassen sie sich auch nicht mit Tools, wie z.B. ResourceHacker editieren.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Hmm das wundert mich nun doch... Betriebssystem = xp aber,

    ich habe zwar kein 7 zur Hand, das geht aber unter Server 2003 und auch unter Server 2008. Rechtsklick in den schmalen Fensterrahmen und dann aus Untermenü auswählen?22.png


    da gibt es dann noch weiter, Kameramodell und was weiß ich denn? Klar ist, dass Test.txt (Datei) reckte Maustatste und dann Dateiinfo wie in #1 in xp /Server 2003 anders gehandhabt wird wie unter Server 2008. Dort gibt es Dateiinfo wie aus #1 tatsächlich nicht. Jedoch die Geschichte mit der Titelleiste funktioniert in xp/Server2003/server2008 vollkomen gleich.

    Könnt Ihr mal prüfen ob es das bei Euch auch gibt - damit wir mal auf einen stand "aufsetzen" können?

    Danke

    Gruß

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Könnt Ihr mal prüfen ob es das bei Euch auch gibt - damit wir mal auf einen stand "aufsetzen" können?

    Ja das geht ! (Mein System : Win 7 Pro - 64)

    Rechtsklick in ein beliebiges Feld der Überschriften, also z.B. Name -> Weitere...

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Könnt Ihr mal prüfen ob es das bei Euch auch gibt - damit wir mal auf einen stand "aufsetzen" können?

    Tatsächlich, als Detailansicht und dem Rechtsklick in den Listviewheader kann ich mir das auch anzeigen lassen.

    Bei solchen Themen solltest du am besten mit dem Präfix C# oder C++ suchen, da für solche Sprachen meist Beispiele existieren.

    Ich habe für C# etwas vielversprechendes gefunden was du dir mal angucken solltest: http://scatteredcode.net/tutorials/c-ad…tom-properties/

    Das kannst du dann zu AutoIt umwandeln.

  • Ich habe für C# etwas vielversprechendes gefunden was du dir mal angucken solltest: http://scatteredcode.net/tutor…t-ntfs-custom-properties/

    Ich habe auch einige Beispiele gefunden, aber irgendwie scheint es immer darauf hinauszulaufen, dass man die DSOfile.dll benötigt !

    https://technet.microsoft.com/library/ee692828.aspx

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • alpines - das sieht super aus. Leider habe ich noch nichtmal den Anflug einer Ahnung wie man das in autoit transferiert. Das übersteigt meine Möglichkeiten. Gibt es da einen chrash Kurs für Anfänger :) oder ev. freundliche Hilfe? Denn wie gezeigt wird, da kann man richtig schicke Sachen mit machen!

    Danke

    Peter.

    Ps.: Musashi --> Grazie für Überprüfung

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Das übersteigt meine Möglichkeiten. Gibt es da einen chrash Kurs für Anfänger oder ev. freundliche Hilfe?

    Ich hätte mir eine C# DLL geschrieben und Funktionen exportiert um das ganze nochmal in C# zu wrappen (da gibt es sicherlich viel bessere Möglichkeiten).

    Also praktisch eine bool writeAuthor(string filename, string author); und dann könntest du diese DLL in AutoIt ansprechen und einfach die Parameter übergeben.

    Zum Thema C# DLLs in AutoIt habe ich bereits ein Tutorial verfasst.

  • Hallo Peter S. Taler !

    Schau mal da rein :

    https://www.administrator.de/forum/objectha…ren-228668.html

    Setzt DSOfile.dll voraus !

    $objFile = ObjCreate("DSOFile.OleDocumentProperties")

    $objFile.Open("C:\test.txt")

    $objFile.SummaryProperties.Title="1.2"

    $objFile.Save

    $objFile.close()

    Siehe z.B. auch :

    https://www.autoitscript.com/forum/topic/71913-file-title/

    Wenn man nach 'autoit DSOFile.OleDocumentProperties' googlet, findet man einige Beiträge, häufig aus dem engl. Forum. Teilweise sind die Quellen aber schon recht alt. Keine Ahnung, was da z.B. unter Win10 passiert :/.

    Edit : Nach dem was ich kurz überflogen habe, solltest Du dein Skript bei obigen Beispielen immer als 32-Bit 'kompilieren' , also #AutoIt3Wrapper_UseX64 = N


    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • @ Musashi,

    danke - mit dem Suchbegriff hatte ich - nach alpines Beitrag auch gesucht und gefunden. Trotz dass ich die DSOfile.dll ins Windows\system32 kopiert habe und registriert, bekomme ich bei Deinen Beispielzeilen folgenden Fehler:

    "F:\Neu AutoIt v3 Script.au3" (14) : ==> The requested action with this object has failed.: $objFile.Open("F:\test.txt")

    $objFile^ ERROR

    Funktioniert das bei Dir?

    Danke

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • "F:\Neu AutoIt v3 Script.au3" (14) : ==> The requested action with this object has failed.:$objFile.Open("F:\test.txt")

    $objFile^ ERROR


    Funktioniert das bei Dir?

    Ich habe erst mal nur nach passenden Beispielen gesucht, um Dir eine mögliche Richtung aufzuzeigen ;) (zum Testen fehlte mir die Zeit). Der Codeschnippsel diente nur zur Anschauung und ist nicht vollständig.

    Relevant sind die Links !

    Hast Du die DLL wirklich in das SYSTEM32 bzw. SYSWOW64-Verzeichnis (bei 64bit OS) kopiert und mit :

    regsvr32 dsofile.dll

    registriert ?

    Schaue Dir bitte die Beiträge #5 und #6 aus folgendem Link an :

    https://www.autoitscript.com/forum/topic/71913-file-title/

    Prüfe nach ObjCreate was IsObj meldet :

    AutoIt
    $objFile = ObjCreate("DSOFile.OleDocumentProperties")
    If Not IsObj($objFile) Then ... ; hier mal mittels ConsoleWrite prüfen

    Ansonsten poste bitte mal dein Skript.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Musashi

    ja klar ist registriert. Ich habe keinen code. Vielleicht ist das naiv aber ich war der Meinung der Schnippsel sollte laufen.

    Ich lasse das laufen.....

    $objFile = ObjCreate("DSOFile.OleDocumentProperties")

    $objFile.Open("F:\test.txt")

    $objFile.SummaryProperties.Title="1.2"

    $objFile.Save

    $objFile.close()

    --------------------

    und bekomme diese Fehlermeldung:

    "F:\Neu AutoIt v3 Script.au3" (14) : ==> The requested action with this object has failed.:

    $objFile.Open("F:\test.txt")

    $objFile^ ERROR

    -------------------------------------------------------------

    Auch die diversen #UDFs aus den engl. Foren bringen ähnl. Fehler. Mir ist klar - sieht aus als sei die dll nicht registriert. Aber die habe ich - incl. - Neustart schon mehrmals reg und dereg usw.

    Kaum habe ich das geschrieben - habe ich eine idee - mit Office Files funktioniert das z.B. *.xls. Sollte aber doch auch für alle anderen Files funktionieren - sonst ist das ja sinnlos.

    Danke

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Hallo Peter S. Taler !


    Damit wir auf der gleichen Basis testen, hier das Skript des Users rover aus dem Thread :

    https://www.autoitscript.com/forum/topic/71913-file-title/

    (Nebenbei : Der User PsaltyDS , ein echtes Schwergewicht im engl. Forum, hat es für gut befunden)

    Ich habe nur die AutoItWrappers gesetzt und einige Linkkommentare und MsgBoxen hinzugefügt.

    Kaum habe ich das geschrieben - habe ich eine idee - mit Office Files funktioniert das z.B. *.xls.

    Nun, dann scheint die DSOFile.dll ja schon mal korrekt registriert zu sein :thumbup:.

    Sollte aber doch auch für alle anderen Files funktionieren - sonst ist das ja sinnlos.

    Mehrere Quellen, u.A. auch der Link von alpines machen diesbzgl. folgende Aussagen :

    http://scatteredcode.net/tutorials/c-ad…tom-properties/

    However, Microsoft released a library called DSOfile, which is intended for changing properties of Office files if you ;don't have Office installed. It can, however, work on any type of files.

    Microsoft Support

    The Dsofile.dll sample file reads and writes to both the standard properties and the custom properties from any "OLE Structured Storage" file. This includes, but is not limited to, the following : Word documents, Excel workbooks, PowerPoint presentations

    Ich habe im obigen Skript mal eine .doc-Datei geladen ==> alles OK !

    Ich kann auch z.B. eine AutoIt-Exe öffnen, nur werden dort keine Detaileigenschaften angezeigt. Das liegt wohl daran, dass sie im Dateiheader selbst stehen.

    Kompiliert man z.B. ein AutoIt-Skript, welches folgende Angaben enthält :

    AutoIt
    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Res_Description = Testprogramm
    #AutoIt3Wrapper_Res_Field=ProductName|Peters Testprogramm
    #AutoIt3Wrapper_Res_Fileversion = 1.0.0.0
    #AutoIt3Wrapper_Res_LegalCopyright = 2018 by Peter S. Taler
    #AutoIt3Wrapper_Res_Field=CompanyName|Taler GmbH
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

    und aktiviert im Explorer z.B. die Spalte 'Copyright', dann wird das Copyright auch angezeigt. Offensichtlich holt sich der Explorer die Info aus dem Dateiheader.

    Bei z.B. Textdateien werden keine Headerdaten in der Datei abgelegt. Hier muss man sie mit dem obigen Skript in das NTFS-Filesystem eintragen (ggf. geht das auch für z.B. AutoIt-Exe's u.s.w.)

    Insgesamt hatte ich keine Fehler, auch nicht bei .txt's !


    Wenn Du mir die Frage gestattest : Warum möchtest Du das Ganze überhaupt machen ?

    Sobald eine Datei z.B. auf einen USB-Stick kopiert wird, gehen die Informationen der Master File Table (MFT) 'verloren', außer bei den Dateitypen, die Eigenschaften im Dateiheader selbst ablegen.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

  • Musashi,

    warum ich das mache? Du hast natürlich recht, wenn mann die Files kopiert auf nicht NTFS -- > alles Futsch. Aber das habe ich nicht vor. Liegt alles auf einem Server. Angefangen hat das mit einer Idee. Habe ein kleines Progrämmchen in Autoit verfasst mit dem man KFM. Belege erstellen kann. Diese werden autom. in PDFs verwandelt, autom. gemailt und gespeichert; incl. Bildern via drag n drop. Dabei kam ich auf die Idee einen möglichen Workflow über "PDF Anlagen" darzustellen, was auch gut funktioniert. Den Workflow darzustellen, auf den "ersten Blick" funktioniert super via Kommentar - nur muss man Ihn "reinbringen".

    Bin gerade ein wenig eingespannt - danke für Deine Schützenhilfe- Ich hoffe ich komme übers Wochenende zum "Gleichziehen"..... Melde mich dann umgehend.

    Grüße

    Peter

    Ps.: Genauer gerne per PN...

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • Hallo Peter S. Taler !

    Da heute eh Scheißwetter war, habe ich etwas weiter getestet und gelesen - man ist ja hartnäckig :P.

    Fazit :

    Quasi alle Quellen die ich zu DSOFile gesehen habe, leiten sich mehr oder weniger von folgendem Microsoft Technet Artikel ab : https://technet.microsoft.com/en-us/library/ee692828.aspx

    Ich weiß nicht wie gut dein englisch ist aber es lohnt sich, das mal durchzulesen. Auch das von mir gepostete Skript des Users rover (siehe Beitrag #14) ist eine Umsetzung dieses Artikels.

    Mit DSOFile lassen sich übrigens nicht alle Metadaten editieren, die z.B. vom Explorer angeboten werden. Welche genau das sind, kannst Du dem Artikel entnehmen.

    Einige Eigenschaften wie z.B. SummaryProperties.ByteCount sind logischerweise read-only.

    Erst mal die gute Nachricht :

    Mithilfe dieses Skriptes kann man ausgewählte Metadaten auch für Nicht-Office Dateien speichern. Öffnet man die Datei mittels eines AutoIt-Skriptes erneut, so werden die Daten angezeigt.

    Allerdings, und das ist der Haken, werden diese Metadaten im Windows Explorer nur für Office Dateien aufgeführt, obwohl sie nachweislich existieren (zumindest bei Win 7+ ; bei XP lief es ggf. anders).

    Das ist wieder mal eine der heißgeliebten Besonderheiten von Microsoft <X. Daran wird sich vermutlich auch nichts ändern, wenn man die Metadaten mit einem C++/C# Programm usw. einträgt - ich lasse mich aber gerne überraschen.

    Um mit diesen Daten zu arbeiten, musst Du Dir wohl mit AutoIt ein eigenes Anzeigeprogramm bauen.

    ==> Zu : alternate data streams (ADS)

    Neben den Metadaten kann NTFS erweiterte Eigenschaften in Form von alternate data streams speichern.

    siehe : https://en.wikipedia.org/wiki/NTFS#Alte…reams_.28ADS.29

    Diese werden im Windows Explorer aber auch nicht angezeigt.

    Für den alternativen Filemanager 'Total Commander' gibt es angeblich Plug-In's, welche das können sollen, aber das habe ich nicht getestet. Stichworte : NTFS Descriptions und QuickSearch eXtended

    Möglicherweise zeigt der 'Total Commander' auch die Metadaten von Nicht-Office-Dateien an ?!

    ==> Nur als Idee : BeCyPDFMetaEdit

    Zur Not hilft Dir vielleicht auch das Programm BeCyPDFMetaEdit weiter. Damit soll man wohl Metadaten von PDFs bearbeiten können (Freeware, stand-alone, angeblich über Kommandozeile steuerbar).

    Ob diese dann auch im Explorer angezeigt werden, müsstest Du probieren.

    Viel kann ich zu diesem Thema leider nicht mehr beitragen, hoffe aber, es hat Dir etwas gebracht :/.

    EDIT : Anregung

    Könntest Du Dich ggf. mit dem Gedanken anfreunden den Threadtitel :

    "Kommentar wie geht das - ohje Ich she den Wald vor lauter Bäumen nicht"

    zu ändern, in z.B. :

    "Kommentare in NTFS-Metadaten von Files schreiben - wie geht das ?"

    Das würde es anderen Usern vermutlich erleichtern, den Sinn des Threads zu erkennen.

    Gruß Musashi

    86598-musashi-c64-png

    "Am Anfang wurde das Universum erschaffen. Das machte viele Leute sehr wütend und wurde allenthalben als Schritt in die falsche Richtung angesehen."

    Einmal editiert, zuletzt von Musashi (28. Januar 2018 um 08:45) aus folgendem Grund: Text ergänzt

  • Musashi,

    Guten Morgen,

    der Reihe nach:

    Thread Titel wunschgemäß geändert ... passt ja auch besser :)

    Ich hatte die Artikel überflogen, und hatte auch den Code gefunden. Nur egal was ich machte, welchen Code oder Codeschnipsel ich auch immer eingesetzt habe - es flog mir um die Ohren.

    1.jpg

    Bis ich in #13 auf die Idee kam - es mitt einer xls zu probieren - da "lief es" TXT flog mir weiter um die Ohren! Deine Aussage - läuft - gab mir zu schlucken!

    Aber - man ist ab und an einfältig. Was schreibe ich in #1 ...oder NTFS... was schreibst Du in #14 ...beim umkopieren ist alles futsch.... . Grrrrrrr.... ich sitze hier vor meinem Notebook, (NTFS) ABER ich arbeite mit eine RAM Disk (FAT32) und was mache ich??? Ich lasse Script und Testdatei auf F:\ (RAM Disk) laufen!!!!!!!!!!

    Und schon haben wir (denke ich) den Hacken... Läuft Script und Testdatei (txt) auf NTFS alles ok. Datei unter FAT und TYP Office ---> ok

    FAT und kein OFFICE ---> Erros siehe Bildchen...

    Kannst Du das nachvollziehen?

    Abfangen. Nachsehen ob Typ = Office oder Datentrräger ist Ntfs.


    Gruß

    Peter

    Danke sollte nicht fehlen

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

    2 Mal editiert, zuletzt von Peter S. Taler (28. Januar 2018 um 12:28)

  • Musashi,

    wenn ich mit dem Script aus #14 den Comment einer Nicht Office Datei ändere ist das auch im Explorer zu sehen - sofern die Spalte eingeblendet ist (xpsp3)


    Gruß

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)

  • alpines ..so war es gedacht :)

    Gruß

    Peter

    Hinweise auf Suchmaschinen finde ich überflüssig - wer fragt hat es nicht gefunden oder nicht verstanden. Die Antwort gibt sich oftmals schneller als der Hinweis auf Dr. Goggle & Co.

    Ab 19-10-22 ergänzt um:

    Die Welt wird nicht bedroht von den Menschen, die böse sind, sondern von denen, die das Böse zulassen. (Albert Einstein)