2010-03-30 4 views
6

Ich muss wissen, welcher Benutzer Datei im Dateisystem von C# -Code gelöscht. Nur eine Idee ist, Audit zu verwenden, aber es scheint sehr langsam zu sein ...Wie kann ich Benutzer, die Datei gelöscht haben?

+0

Worauf bezieht sich dieses "Audit"? – BlueMonkMN

+1

@BlueMonkMN: Das könnte dies sein: NTFS-Zugriffsüberwachung - http://support.microsoft.com/kb/310399; das scheint die einfachste Option zu sein - schließlich läuft dies näher an den Kernel als an den Benutzerbereich, so dass es alle Dateizugriffsereignisse erfassen sollte (nicht sicher über Low-Level-Festplattenzugriff, aber das wird hier wahrscheinlich nicht benötigt). Ich habe keine Erfahrung mit der Feinabstimmung. – Piskvor

+0

Ich möchte keine Auditing verwenden, weil ich eine Menge Dateien haben werde und es wirklich in das Systemprotokoll – user295518

Antwort

2

Sie können das Ereignis FileSystemWatcher.Deleted verwenden, um auf dem Dateisystem stattfindende Löschungen zu erfassen.

Abhängig von der Anwendung können Sie möglicherweise auch herausfinden, welcher Benutzer dieses Ereignis verursacht hat (es ist nicht Teil von FileSystemEventArgs).

+0

spammen wird. Ich benutze Watcher, aber wenn ich versuche, einen Benutzernamen wie diesen zu bekommen: System.Security.AccessControl.FileSecurity sec = neue FileSecurity (Path, System.Security.AccessControl.AccessControlSections.Owner); Rückgabe sec.GetOwner (typeof (System.Security.Principal.NTAccount)). Value; es wirft eine Ausnahme, da es Benutzer – user295518

+0

@user nicht bestimmen kann: Versuchen Sie 'WindowsIdentity.GetCurrent(). Name' http://msdn.microsoft.com/en-us/library/system.security.principal.windowsidentity. aspx –

1

Ich weiß nicht, ob dies aus dem filsystem abgerufen werden kann, aber eine Möglichkeit besteht darin, ein FileSystemWatcher-Objekt zu verwenden, um ein Ereignis auf Deleted auszulösen. Der Nachteil ist, dass Sie die Watcher-Anwendung die ganze Zeit laufen lassen müssen. Ein Vorteil ist, dass Sie nur einen spezifischen Ordner überwachen können, wenn das machbar ist.

+0

scheint FileSystemWatcher bietet keine Informationen über Benutzer, die Datei gelöscht ... – user295518

+0

Nein, aber ich habe vielleicht gesagt, es könnte durch die Datei zugegriffen werden. Sie müssten den Benutzer abrufen, der die Datei geändert hat, nicht den Besitzer. Aber trotzdem ist die Datei wahrscheinlich schon gelöscht. Deshalb bekommst du die Ausnahme, die ich vermute. –

+0

Vielleicht könnten Sie herausfinden, wie Sie von diesem Quellcode auf die Dateiinformationen der gelöschten Datei zugreifen können? http://ntfsundelete.com/downloads/ –

Verwandte Themen