Amstelchen Geschrieben 10. Februar 2009 Teilen Geschrieben 10. Februar 2009 gegeben sei ein projekt der art WindowsService in VB.NET. ServiceProcessInstaller sowie ServiceInstaller sind vorhanden, um den dienst via installutil des .NET-frameworks als windows-dienst im system einzurichten. ebenfalls verwende ich zwei controls, namentlich einen FileSystemWatcher und ein EventLog, um bei spezifischen änderungen an dateien in definierten pfaden einen eventlog-eintrag zu generieren. ich habe in ersterem definiert, bei den notify-arten FileName, DirectoryName, LastWrite das eventlog zu beschreiben. allerdings kommt nun erschwerend hinzu, dass ein definierter eintrag in einem textuellen logfile, z.b. die zeichenkette "################", vom FileSystemWatcher beobachtet und gemeldet werden soll - es wird beispielsweise um 14:02 begonnen, das file zu befüllen, und um 19:17 scheint im textfile der obengenannte string auf. ich bin mir nun nicht sicher, ob ich nicht in die problematik rutsche, dass das file von erstellenden prozess geöffnet ist und ich deshalb keine laufende überprüfung auf neue zeilen im file machen kann (da ich dafür das file ja offenhalten müsste). gehe ich weiters richtig davon aus, dass ich - wenn der dienst die option "mit desktop interagieren" aktiviert hat - auch shell-befehle damit ausführen kann? tipps zur herangehensweise gerne gesehen! s'Amstel Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
VaNaTiC Geschrieben 11. Februar 2009 Teilen Geschrieben 11. Februar 2009 Du solltest über den Watcher an das WRITE-Ereignis rankommen und dort an die Infos Offset und Length. D.h. jetzt weisst Du genau, dass was neues geschrieben wurde. Wenn allerdings der schreibende Prozess das File aber mit ECLUSIVE geöffnet/erstellt hat, dann kommst Du soweit ich weiss nur ran, wenn Du nen Hook auf WriteFile() in den Prozess injectest. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.