letzerstellte Datei eines Datentypes ermitteln
-
rendner schrieb:
Auf meinem Rechner funktioniert das Programm super, aber bei einem anderem hatt mein Programm den Cookie nicht gefunden, obwohl er den Pfad mit dem Verzeichns(was auf jedem Rechner anderst ist) richtig angegeben hat und der Cookie vorhanden war
Heißt das konkret, dass du dir den zusammengesetzten Pfad hast ausgeben lassen, dieser richtig war, aber trotzdem das Cookie nicht gefunden wurde

rendner schrieb:
darum wollte ich es mal rekursiv versuchen.
Was erhoffst du dir dabei - irgendwoher musst du doch auch da wissen, welche der evtl. mehrfach (in unterschiedl. Verzeichnissen) vorhanden cookie.sol du löschen musst.
rendner schrieb:
und bei der gelegenheit habe ich mir gedacht kann ich auch diese eine Verzeichnis (was überall anderst ist) rekursiv rausfinden.
Ich dachte, das wäre der Teil des Pfades, der auch in dem des aufrufenden Programmes enthalten ist (da es in einem Unterverzeichnis liegt). BTW: Die Rekursion brauchst du natürlich, wenn überhaupt, erst dort anfangen, wo du nicht mehr weiterweißt (also z.B. nicht direkt auf c:)
-
Heißt das konkret, dass du dir den zusammengesetzten Pfad hast ausgeben lassen, dieser richtig war, aber trotzdem das Cookie nicht gefunden wurde
Also mein Programm funktioniert folgender massen:
Mann muss in dem Ordner (wo mein Programm liegt) eine Textdatei anlegen inder der Pfad mit diesem komischen Verzeichnis enthalten ist und eine Zeile drunter den Dateinamen (wie die exe heist die den Cookie legt).
Die exe die den Cookie erstellt liegt ein Verzeichnis höher als mein Programm.
Somit wird beim starten meines Programmes diese Textdatei eingelesen, der aufenthaltsort meiner Datei "erfragt", von dem Ergebnis wird dann ein Verzeichnis hinten "abgeschnitten" und dann mit dem Inhalt der Textdatei verkettet.
Und zu guter letzt wird der Name des Cookies angehangen
Somit weis mein Programm wo der "Schlingel" steckt und liest den Inhalt des Cookies aus.Ist aber am ermittelten Treffpunkt (Pfad) kein Cookie gibts eine Fehlermeldung.
Also habe ich diesen Pfad aus der Textdatei überprüft und wie er den Cookie aus dem anderem Programm gesetzt hat und beides wahr richtig.Was erhoffst du dir dabei - irgendwoher musst du doch auch da wissen, welche der evtl. mehrfach (in unterschiedl. Verzeichnissen) vorhanden cookie.sol du löschen musst.
Der Cookie wird nicht gelöscht.
Anhand des 2ten Pfades kann ich die Cookies identifizieren (Ordner wo dann letzendlich der Cookie enthalten ist hat den namen der exe).
Ist aber anstelle des 2ten Pfades der String, kann ich nur noch mit rekursivität prüfen (falls mehrere solcher Verzeichnisse existieren), welcher Cookie als letzter abgelegt wurde.rendner
-
Ich fasse zusammen:
Cookie_Ersteller.exe
(Ordner1)
Dein_Programm.exe
Deine_Textdatei.txt
(Cookie_Ersteller)
cookie.sol
(Cookie_Ersteller)
cookie.sol
(Cookie_Ersteller)
cookie.sol
(Cookie_Ersteller)
cookie.sol
(Cookie_Ersteller)
cookie.sol
Du sagtest, dass der Ordner in dem der Cookie letztendlich ist, den gleichen Namen wie das Programm hat

edit: Das sind natürlich alles Unterordner...
-
1.) Warum holst du dir nicht über GetModuleFileName den Pfad deiner Anwendung
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
-
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\123Nun 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 istC:\Dokumente und Einstellungen\Benutzer\Anwendungsdaten\45REfc9der 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\abcdann werden diese 2 etwas zurecht gestutzt und ergeben letzendlich den
Zielpfad des Cookies, cookieMaker.exe ist der Ordner wo sich der Cookie befindetC:\Dokumente und Einstellungen\Benutzer\Anwendungsdaten\45REfc9\Dokumente und Einstellungen\Benutzer\Desktop\abc\cookieMaker.exeUnd 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.exeSo 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 existiertKann 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\##D8CAD34AEA2E6998Und (so ein Sche**ß) der Cookie heißt:
00000001.solJetzt 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\##D8CAD34AEA2E6998Und (so ein Sche**ß) der Cookie heißt:
00000001.solJetzt 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