letzerstellte Datei eines Datentypes ermitteln



  • Ja der Pfad unterteilt sich dann in Unterordner.
    Bsp:
    Die Datei die den Cookie erstellt heist cookieMaker.exe und liegt unter diesem Pfad: C:\Dokumente und Einstellungen\Benutzer\Desktop\abc
    Mein Programm liegt in dem Ordner 123 (einen tiefer als cookieMaker.exe), also ist der Pfad: C:\Dokumente und Einstellungen\Benutzer\Desktop\abc\123

    Nun wird der Cookie erstellt und mein Programm gestartet und "erstellt" sich den Pfad aus folgenden teilen:

    erster fester teil unter dem alle cookies gespeichert werden
    letzter Ordner is der der auf jeden Rechner anderst ist

    C:\Dokumente und Einstellungen\Benutzer\Anwendungsdaten\45REfc9
    

    der Pfad den mein Programm ermittelt (fragt seinen eigenen Pfad ab, und
    entfernt den letzten Ordner, somit erhällt er den Pfad der cookieMaker.exe)

    C:\Dokumente und Einstellungen\Benutzer\Desktop\abc
    

    dann werden diese 2 etwas zurecht gestutzt und ergeben letzendlich den
    Zielpfad des Cookies, cookieMaker.exe ist der Ordner wo sich der Cookie befindet

    C:\Dokumente und Einstellungen\Benutzer\Anwendungsdaten\45REfc9\Dokumente und Einstellungen\Benutzer\Desktop\abc\cookieMaker.exe
    

    Und hier ein Bsp wenn der Pfad wo sich die cookieMaker.exe befindet zu lang ist:
    Da ist dann der Zielpfad folgender (variiert aber auch anhand des Originalpfades):

    C:\Dokumente und Einstellungen\Benutzer\Anwendungsdaten\45REfc9\000006377A\cookieMaker.exe
    

    So jetzt dürfte alles geklärt sein...

    EDIT:

    1.) Warum holst du dir nicht über GetModuleFileName den Pfad deiner Anwendung

    Mein Programm ermittelt den Pfad anhand von GetFullPathName.

    2.) Wann du ein Problem hast, wenn der exe-Namen der Cookie-setzenden Anwendung zu lang ist, warum lässt du dann nicht in der Textdatei direkt den Verzeichnisnamen angeben

    Das wollte ich aber nicht, da es ja etwas "dynamisch" sein sollte.
    Darum lasse ich doch den Pfad ermitteln.
    Aber dies nützt nix, wenn der Pfad des Programmes als String (der kommische) gespeichert wird.

    rendner



  • Also wenn du von 45REfc9 nicht weißt, wie es auf dem jeweiligen Rechner heißt, dann würde ich so vorgehen:
    - Mit FindFirstFile & Co. alle direkten Unterverzeichnisse von "C:\Dokumente und Einstellungen\Benutzer\Anwendungsdaten\" ausfindig machen.
    - dann mit jedem von diesen testen, ob es dort das Unterverzeichnis "Dokumente und Einstellungen\Benutzer\Desktop\abc\cookieMaker.exe" gibt
    - falls nicht: jeweils die direkten Unterverzeichnisse ermitteln und testen, ob dort das Verzeichnis cookieMaker.exe existiert



  • rendner schrieb:

    Darum lasse ich doch den Pfad ermitteln.

    Und wie machst du das bisher?

    rendner schrieb:

    Aber dies nützt nix, wenn der Pfad des Programmes als String (der kommische) gespeichert wird.

    Das bezieht sich jetzt auf bsp. 000006377A, oder?



  • Und wie machst du das bisher?

    Damit meinte ich den Ort der cookieMaker.exe, und dies geschieht mit GetFullPathName.

    Das bezieht sich jetzt auf bsp. 000006377A, oder?

    Ja 🙂

    würde ich so vorgehen:
    - Mit FindFirstFile & Co. alle direkten Unterverzeichnisse von "C:\Dokumente und Einstellungen\Benutzer\Anwendungsdaten\" ausfindig machen.
    - dann mit jedem von diesen testen, ob es dort das Unterverzeichnis "Dokumente und Einstellungen\Benutzer\Desktop\abc\cookieMaker.exe" gibt
    - falls nicht: jeweils die direkten Unterverzeichnisse ermitteln und testen, ob dort das Verzeichnis cookieMaker.exe existiert

    Kann man wenn man zB das erste Verzeichnis gefunden hat das so vergleichen

    erstesGefundeneVerzeichnis == Dokumente und Einstellungen\Benutzer\Desktop\abc\cookieMaker.exe
    oder muss ich bei dem gefundenen Verzeichnis prüfen ob es auch die anderen enthällt???

    Danke ersteinmal für Deinen Beistand, muss dann mal die Tage loslegen und mal gucken ob ich rekursivität umsetzen kann.
    Falls Dir noch ne tollere Lösung einfällt lass es mich wissen.

    rendner



  • Und wie ermittelst du bisher (du schriebst ja, dass es auf deinem Rechner funktionierst) das 45REfc9 (was ja dynamisch ist)?!

    rendner schrieb:

    Kann man wenn man zB das erste Verzeichnis gefunden hat das so vergleichen

    erstesGefundeneVerzeichnis == Dokumente und Einstellungen\Benutzer\Desktop\abc\cookieMaker.exe
    oder muss ich bei dem gefundenen Verzeichnis prüfen ob es auch die anderen enthällt???

    Du kannst auch einfach schon den ganzen Pfad incl. cookie.sol damit zusammen setzen und versuchen die Datei zu öffnen 🙄



  • Und wie ermittelst du bisher (du schriebst ja, dass es auf deinem Rechner funktionierst) das 45REfc9 (was ja dynamisch ist)?!

    Ach ja das mit dem Verzeichnis was überall anderst ist habe ich jetzt unterschlagen 🙂
    Im Ordner meines Programmes liegt eine Textdatei (die der user erstellen muss) in der der Pfad mit diesem Verzeichnis gespeichert ist und noch der Name der Anwendung die den Cookie legt.

    Du kannst auch einfach schon den ganzen Pfad incl. cookie.sol damit zusammen setzen und versuchen die Datei zu öffnen

    Das hatte ich bisher immer gemacht, und wenn Datei nicht da, dann halt Fehlermeldung.

    Also muss ich nur diesen einen Ordner (der überall anderst ist) auslesen.
    Und falls der Pfad zum Cookie anderst ist (der kurze Pfad), müsste ich halt rekursiv nach dem suchen.
    Hast Du vielleicht einen Tipp wie man diesen Ordner schnell und einfach "enttarnen" kann?
    Leider ist dieser nicht der einzigste der Dateien mit dieser Endung (sol)enthällt.

    rendner



  • rendner schrieb:

    Im Ordner meines Programmes liegt eine Textdatei (die der user erstellen muss) in der der Pfad mit diesem Verzeichnis gespeichert ist und noch der Name der Anwendung die den Cookie legt.

    Ist das für dich OK, oder war das nur zum Test und ist genau das, was jetzt geändert werden soll?

    rendner schrieb:

    Du kannst auch einfach schon den ganzen Pfad incl. cookie.sol damit zusammen setzen und versuchen die Datei zu öffnen

    Das hatte ich bisher immer gemacht, und wenn Datei nicht da, dann halt Fehlermeldung.

    Ich hatte das gemeint zum Testen, ob der Pfad stimmt. Du probierst einfach durch, bis CreateFile ein gültiges Handle zurückliefert (evtl. geht es aber auch anders schneller).

    rendner schrieb:

    Also muss ich nur diesen einen Ordner (der überall anderst ist) auslesen.

    Das war eben die Frage, ob das so bleiben kann, oder ob das auch dynamisch sein darf.

    rendner schrieb:

    Und falls der Pfad zum Cookie anderst ist (der kurze Pfad), müsste ich halt rekursiv nach dem suchen.

    Eigentlich brauchst du da keine Rekursion mehr, da du ja nur die direkten Unterverzeichnisse durchgenen musst - dort musst dann ja die cookie.sol liegen.

    rendner schrieb:

    Leider ist dieser nicht der einzigste der Dateien mit dieser Endung (sol)enthällt.

    Auch nicht die einzige cookie.sol? Falls nicht, woran willst du die richtige cookie soll erkennen (falls z.B. ein Verzeichnis 12345678 und eins 87654321 eine Datei cookie.sol enthält)?



  • Hab noch einmal in einen älteren Thread von mir geguckt, da hatte volkard
    unteranderem die Idde dies mit Dateisystemjournale zu lösen.
    Um irgendwie die zuletzt erstellte Datei zu finden.
    Leider weis ich nicht viel darüber, habe irgendwie nur mitbekommen das dies eigentlich zur Datensicherung dient.
    Kennst Du Dich damit aus, oder ist das zu kompliziert (habe ja leider keine tiefgreifende Erfahrung), falls zu kompliziert können wir das auch vergessen.

    So nun zum eigentlichen wieder...

    Ist das für dich OK, oder war das nur zum Test und ist genau das, was jetzt geändert werden soll?

    Ich fands am Anfang schon immer unpraktich, aber diese manko kann ruhig beseitigt werden, es ging daja eigentlich nur um diesen einen Ordner.
    Aber falls das HomeVerzeichnis anderst ist (auf G oder was weis ich)
    hätte ich dann auch immer den richtigen Pfad gehabt.
    Wie man das HomeVerzeichnis ausliest habe ich jetzt auch hinbekommen, somit kann dies weggelassen werden.
    Also, Textdatei soll wegfallen und ich ermittle das intern, aber das Problem ist momentan den Ordner (auf jedem Rechner anderst) zu "erkennen".

    Ich hatte das gemeint zum Testen, ob der Pfad stimmt. Du probierst einfach durch, bis CreateFile ein gültiges Handle zurückliefert (evtl. geht es aber auch anders schneller).

    Weis jetzt nicht ganz genau worauf Du hinaus willst.
    Wenn ich den einen Ordner nicht weis (der auf jedem Rechner anderst ist), kann ich die Ordner die ich dann im Verzeichnis (wo dieser liegen müsste) finden in meinen Pfad integrieren und den ermittelten der exe und Cookienamen anhängen (meinste vielleicht das?).
    Das Problem wird nur wenn es dieser kurze String als Pfad ist, da müsste ich dann rekursiv ran und mit der Systemzeit halt abgleichen welcher Cookie als letzter erstellt wurde.

    Das war eben die Frage, ob das so bleiben kann, oder ob das auch dynamisch sein darf.

    Das kann ruhig geändert werden 🙂 ist ja für den user auch unpraktich.

    Eigentlich brauchst du da keine Rekursion mehr, da du ja nur die direkten Unterverzeichnisse durchgenen musst - dort musst dann ja die cookie.sol liegen.

    Doch, oder?
    Der cookie hat dann keine Unterordner als Pfad (wenn der Pfad als kurzer String gespeichert wird).
    Habe nocheinmal geprüft (also die Programme in mehrere Unterordner vom Desktop aus, damit dieses Ereignis eintritt).
    Pfad zum Cookie:

    C:\Dokumente und Einstellungen\Benutzer\Anwendungsdaten\45REfc9\##D8CAD34AEA2E6998
    

    Und (so ein Sche**ß) der Cookie heißt:

    00000001.sol
    

    Jetzt wirds Bein dicke...da weis ich nun auch nicht mehr wie mann das ermitteln soll.
    Also wenn Pfad zu kurz heist das Teil immer 00000001.sol solange die gleiche Cookie.exe keine anderen Cookies Speichert.
    Das könnte ich aber auch noch rausbekommen (welcher Cookie, wenn mehrere in diesem Ordner), indem ich den Inhalt des Cookies in meinem Programm analysiere.

    woran willst du die richtige cookie soll erkennen (falls z.B. ein Verzeichnis 12345678 und eins 87654321 eine Datei cookie.sol enthält)?

    Das müsste ich die Erstellungszeit des Cookies prüfen (Cookie muss halt immer bevor mein Programm gestartet wird neu gelegt werden).

    Noch eine andere Frage, mein Programm erzeugt eine "gmon.out" Datei kann ich das noch irgendwie ausstellen?
    ( arbeite mit DEV-C )

    rendner



  • rendner schrieb:

    Hab noch einmal in einen älteren Thread von mir geguckt, da hatte volkard unteranderem die Idde dies mit Dateisystemjournale zu lösen.
    Um irgendwie die zuletzt erstellte Datei zu finden.
    Leider weis ich nicht viel darüber, habe irgendwie nur mitbekommen das dies eigentlich zur Datensicherung dient.
    Kennst Du Dich damit aus, oder ist das zu kompliziert (habe ja leider keine tiefgreifende Erfahrung), falls zu kompliziert können wir das auch vergessen.

    Da kenne ich mich auch überhaupt nicht aus. Ich bin mir aber nicht sicher, ob du das damit im Nachhinein noch machen kannst 🙄

    rendner schrieb:

    Wenn ich den einen Ordner nicht weis (der auf jedem Rechner anderst ist), kann ich die Ordner die ich dann im Verzeichnis (wo dieser liegen müsste) finden in meinen Pfad integrieren und den ermittelten der exe und Cookienamen anhängen (meinste vielleicht das?).

    Genau 😉

    rendner schrieb:

    Habe nocheinmal geprüft (also die Programme in mehrere Unterordner vom Desktop aus, damit dieses Ereignis eintritt).
    Pfad zum Cookie:

    C:\Dokumente und Einstellungen\Benutzer\Anwendungsdaten\45REfc9\##D8CAD34AEA2E6998
    

    Und (so ein Sche**ß) der Cookie heißt:

    00000001.sol
    

    Jetzt wirds Bein dicke...da weis ich nun auch nicht mehr wie mann das ermitteln soll.
    Also wenn Pfad zu kurz heist das Teil immer 00000001.sol solange die gleiche Cookie.exe keine anderen Cookies Speichert.
    Das könnte ich aber auch noch rausbekommen (welcher Cookie, wenn mehrere in diesem Ordner), indem ich den Inhalt des Cookies in meinem Programm analysiere.

    Hm, d.h falls die Anwendung mehrere Cookies schreibt, dann musst du nicht unbedingt das neueste nehmen, sondern das mit dem entsprechenden Inhalt, welches wiederum nicht zwangsläufig 00000001.sol (im Falle des gekürzten Verzeichnisnamens) heißt. Wie sieht es aus, wenn der Pfad nicht gekürzt wird, und mehrere Cookies gesetzt werden?

    rendner schrieb:

    Das müsste ich die Erstellungszeit des Cookies prüfen (Cookie muss halt immer bevor mein Programm gestartet wird neu gelegt werden).

    So wie es schein, hast du nur die Möglichkeit über das Datum zu gehen - für eine umfassende Lösung solltest du aber erst vollständig ermitteln, was in welchem Fall die für dich interessante Datei ist. Da du aber sagtest, dass dein Programm direkt im Anschluss ausgeführt wird, denke ich, dass du schon mal eigentlich nur noch sehr wenige .sol-Dateien hast, die in Frage kommen.

    rendner schrieb:

    Noch eine andere Frage, mein Programm erzeugt eine "gmon.out" Datei kann ich das noch irgendwie ausstellen?
    ( arbeite mit DEV-C )

    Laut Google enthält diese Datei die Profiling-Informationen - kompilierst du evtl. im Debug-Modus?!



  • Laut Google enthält diese Datei die Profiling-Informationen - kompilierst du evtl. im Debug-Modus?!

    Da hätte ich auch mal gucken können 😉 .
    Ja hattest recht, da wahr noch so ein kleiner Hacken, mensch mensch...

    Wie sieht es aus, wenn der Pfad nicht gekürzt wird, und mehrere Cookies gesetzt werden?

    Dann hat der Cookie den von mir gewollten Namen.
    Aus dem Programm was den Cookie legt wird eigentlich der Cookie immer als DateiPfad.sol gespeichert, dieser heißt ja dann auch so, Ausnahme ist... na Du weist ja mittlerweile schon welche ich meine!

    Da du aber sagtest, dass dein Programm direkt im Anschluss ausgeführt wird, denke ich, dass du schon mal eigentlich nur noch sehr wenige .sol-Dateien hast, die in Frage kommen.

    Das kommt wieder darauf an wieviel Cookies zur Laufzeit des Programmes erzeugt werden.
    Wenn der user mit der gleichen exe andere Cookies legt, muss ich auch erst suchen aber zum Glück nur wenn das Problem mit dem String (der Pfad) auftaucht.

    Dann werd ich jetzt das mal umsetzen (kann aber etwas dauern, muss noch für Prüfungen lernen ... 😞 ).
    Werd das mit dem Ordner (der überall anderst ist) mit Deiner trickreichen Methode zu Leibe rücken, und wenn kein Ergebnis zurückkommt dann...hmmm wie bekomme ich dann diesen Ordner, dann muss ich ja schon rekursiv nach sol-Dateien suchen die gerade erstellt wurden und ihren Inhalt prüfen...na mal sehen wie weit ich komme.

    Aber nochmals vielen Dank, für Deine bisherige Hilfe!!!!!!

    EDIT:
    Mir ist gerade eingefallen, man könnte mein Programm bevor der Cookie gelegt wird aufrufen (und schliest sich halt dann nach max ner Sekunde).
    Was für möglichkeiten hätt ich den da das Ding zu Identifizieren (oder abzufangen).
    Oder seinen Pfad rauszubekommen(falls es der String währe).

    rendner


Anmelden zum Antworten