Logfiles Überwachen



  • Grad den Beitrag von Firefighter gelesen.
    => Dann ist die Diskussion eh obsolet 🙂

    Gibts denn da keinen Weg?
    Das kann doch nicht sein, bei dem "mächtigen" .net.
    Microsoft wird doch da ne Möglichkeit implementiert haben (?)

    Ich werde wohl nicht der erste sein mit dem Problem (?)





  • Firefighter schrieb:

    Vermutung oder Wissen? 😉 Dann brauch ich Beweise, wenn du meine Aussage schon in Frage stellst :p

    Ich weiss dass deine Aussage falsch ist, da es nicht einen eingeloggten User gibt. Es kann viele eingeloggte User geben. Es gibt auch Services die laufen ohne dass überhaupt ein User interaktiv eingeloggt ist.

    Lies mal einfach weiter in der Beschreibung.

    You can use the UserName property to identify the user on the current thread, to the system and application for security or access purposes. It can also be used to customize a particular application for each user.

    Und weiter unten

    EnvironmentPermission

    for read access to the USERNAME environment variable. Associated enumeration: EnvironmentPermissionAccess.Read

    Der Wert scheint also aus der USERNAME Environment Variable zu kommen. Dass der Wert nicht mit dem "eingeloggten" User zusammenstimmt, kannst du einfach ausprobieren, indem du mit runas /username:xyz cmd.exe eine Command-Shell startest, und dann set user machst. Da steht dann USERNAME=xyz .
    DAS habe ich auch ausprobiert bevor ich gepostet habe.

    Ob sich der Wert ändert, wenn man einem Thread ein neues User-Token verpasst ("impersonate"), hab ich nicht ausprobiert. Probier's doch selbst 🤡



  • @logview:
    Mit Windows Change Journals scheint es nicht zu gehen. Die Struktur die angibt was sich geändert hat sagt auch nur Filename und Action (changed, deleted, ...), aber nicht wer.

    Und was ich auf die Schnelle über Transactional NTFS gefunden habe liest sich auch nicht so als ob das damit einfach ginge.

    Das Problem ist hier also nicht das "doch-nicht-so-allmächtige" .NET, sondern Windows selbst. Windows merkt sich das wohl nirgends, also kannst du es über .NET auch nicht abfragen.

    Vielleicht kannst du die zu überwachenden Dateien auf einem anderen System speichern, und über FTP, NFS, SMB, HTTP oder WebDAV zugreifen? Vielleicht liesse sich da ein System finden welches Änderungen tracken kann.



  • @hustbaer: Jaja das war mir schon klar. Nur dachte ich als du schriebst:

    hustbaer schrieb:

    Firefighter schrieb:

    Den eingeloggten User am System.

    Es gibt nicht "den eingeloggten User am System".

    Environment.UserName müsste der User sein, mit dem der Prozess gestartet wurde (Vermutung).

    Das du sagen wolltest, das Enviroment.UserName eben nicht den eingeloggten User zurückgibt. Das man damit nicht die User ermitteln kann die eingeloggt sind im System, war mir schon klar nachdem der Threadersteller mit seinem Terminal Server kam. Also einfach nur falsch verstanden :p



  • hustbaer schrieb:

    @logview:
    Vielleicht kannst du die zu überwachenden Dateien auf einem anderen System speichern, und über FTP, NFS, SMB, HTTP oder WebDAV zugreifen? Vielleicht liesse sich da ein System finden welches Änderungen tracken kann.

    Leider nein, da die komplette Platte (c:\) auf Änderungen überwacht werden sollte



  • Das muss eigentlich doch Möglich sein, da es zig Tools gibt, die auch so etwas machen.

    Des Weiteren macht der Windows Server 2003 mit den Überwachungsrichtlinien auch das Selbe.





  • Bitte korregiert mich, falls ich falsch liege, aber das bringt mir nicht viel oder?

    Alle angemeldeten User auszulesen ist kein Problem, aber wie soll ich die in Zusammenhang mit einem löschen eines Files bringen?



  • Ach Fuk, das habe ich ja völlig aus dem Auge verloren... Ja dann bringts dir nichts, sorry mein Fehler.



  • Ich kenne nur Tools die das können, die sich irgendwie ins System einhängen. Sysinternals File-Monitor und sowas. Sind aber soweit ich weiss keine offiziellen APIs die da Verwendung finden.


Anmelden zum Antworten