Log eines anderen Programmes auslesen

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 31 Antworten in diesem Thema. Der letzte Beitrag () ist von MrTrebron.

    SidezockingLP schrieb:

    Hoffnung?

    RodFromGermany schrieb:

    Wenn der andere Prozess die Datei geclaimed hat, müsstest Du eine Shadow Copy erstellen und die auslesen, das ist estwas tricky.
    Das Log-schreibende Programm ist "unhöflich". ;(
    Wer hat denn diese Aufgabenstellung verfasst?
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    SidezockingLP schrieb:

    Ich hätte das ja so hingenommen dass es nicht geht, aber mit Notepad++ kann ich den Text ohne Probleme öffnen.
    Ich hab diese Post#1-Behauptung mal bei mir versucht zu überprüfen, da ich mit VB.Net-Mitteln inkl. WinAPI keine Kopie erstellen kann. Das Ergebnis bei Version 7.5.4, nachdem ich selber mit VB.Net eine Datei erzeugt habe, die offen gehalten und im Hintergrund fröhlich beschrieben wird:

    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    @VaporiZed Das ist mir glatt durch die Lappen gegangen. :whistling:
    @SidezockingLP Wenn dem tatsächlich so ist, kannst Du die Datei problemlos öffnen.
    Kläre uns bitte nach experimenteller Überprüfung auf, ob Du die geclaimte Datei gleichzeitig mit dem Notepad++ öffnen kannst, also: Access-Exception aun gleichzeitig Notepad offen.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @RodFromGermany Also ich habe jetzt mal alles experimentell überprüft

    Die Log Datei kann während der Verwendung durch den anderen Prozess:
    - Kann mit dem Windows Editor gelesen werden, aber nicht mit Änderungen gespeichert werden.
    - Kann mit Notepad++ gelesen, geändert und abgespeichert werden
    - Kann in VB.net nicht durch den FileStream oder den StreamReader ausgelesen werden
    Eine Kopie des Logs kann allerdings mit dem FileStream oder dem StreamReader ausgelesen werden. Frage, ist das die Lösung? Ist das nicht sehr unsauber wenn die Datei ständig kopiert wird?

    SidezockingLP schrieb:

    Ist das nicht sehr unsauber wenn die Datei ständig kopiert wird?
    Nein.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    SidezockingLP schrieb:

    Kann in VB.net nicht durch den FileStream oder den StreamReader ausgelesen werden

    Sry, hab den ganzen Thread jetzt nicht gelesen, aber geht das auch nicht, wenn du den FileShare mit angibt? Ich glaube das ist in so einem Fall wichtig: new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite) Das gibt an, dass andere Prozesse Lesen und Schreiben dürfen.
    Aber wär das nicht eine Einstellung für die schreibende App? Dass die quasi akzeptiert, dass andere mitmachen dürfen.

    Hab's mal probiert (vielleicht auch falsch). Das Ergebnis:
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    MrTrebron schrieb:

    Diese Einstellung kann man auf beiden Seiten verwenden.

    Genau. Bei FileShare geht es lediglich um andere Zugriffe. Hier kommt es nicht darauf an wer zuerst Zugriff hatte oder wer die Datei erstellt hat oder wer schreibt/liest. FileShare muss mit den FileAccess der anderen Zugriffe kompatibel sein.
    @MrTrebron & @Bluespide:
    Auch wenn's nicht mein Thread ist: Ich blick's immer noch nicht. Es gibt einen Fremdprozess, welcher in eine Datei schreibt und sie offen behält. Und wo muss man jetzt bei Stream-Erstellung die FileShare-Optionen verwenden

    Bluespide schrieb:

    dass andere Prozesse Lesen und Schreiben dürfen
    Den externen Prozess kann ich nicht beeinflussen.

    Bluespide schrieb:

    FileShare muss mit den FileAccess der anderen Zugriffe kompatibel sein.
    Die anderen Zugriffe, nämlich die des originären Fremdprozesses kenn ich ja nicht. Kann ich die auslesen? Muss ich rumprobieren, um da Kompatibilität zu erzeugen? Denn meine Vermutung, dass das alleinige Aufgabe des externen Prozesses sei, die Zugriffe festzulegen, wurde ja von Euch verneint und es wurde angemerkt, dass das jede App kann. Nur seid Ihr leider noch nicht auf meinen Screenshot aus Post#28 und die dazu gestellte Frage eingegangen. Da kam, dass trotz der vorgeschlagenen Einstellungen bei Streamerzeugung kein Zugriff auf die Datei, die von dem externen Prozess offen gehalten wird, möglich sei.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Wünschenswert wäre es wenn der Fremdprozess das auch gesetzt hat.
    Wenn man Einfluß auf den Prozess hat, zum Beispiel bei Eigenentwicklung oder weil es eine Auftragsarbeit ist, dann sollte man die Option auch im LogSchreibenden Prozess setzen.

    Die App die das Log liest sollte die Shared Option auf jeden Fall setzen um keine Sperre zu erzeugen
    Die deutsche Sprache ist Freeware, du kannst sie benutzen, ohne dafür zu bezahlen. Sie ist aber nicht Open Source, also darfst du sie nicht verändern, wie es dir gerade passt.