2010-03-30 3 views
6

J'ai besoin de savoir quel utilisateur a supprimé le fichier dans le système de fichiers du code C#. Une seule idée consiste à utiliser l'audit, mais il semble être très lent ...Comment puis-je obtenir l'utilisateur qui a supprimé le fichier?

+0

De quoi parle cette «vérification»? – BlueMonkMN

+1

@BlueMonkMN: Cela pourrait être: l'audit d'accès NTFS - http://support.microsoft.com/kb/310399; Cela semble être l'option la plus simple - après tout, cela se rapproche plus du noyau que de l'espace utilisateur, donc il devrait attraper tous les événements d'accès aux fichiers (pas sûr de l'accès au disque bas niveau, mais probablement pas ici). Je n'ai aucune expérience avec le réglage fin cependant. – Piskvor

+0

Je ne veux pas utiliser l'audit car j'aurai beaucoup de fichiers et il va vraiment spammer dans le journal système – user295518

Répondre

2

Vous pouvez utiliser l'événement FileSystemWatcher.Deleted pour capturer des suppressions se produisant sur le système de fichiers.

En fonction de l'application, vous pouvez également être en mesure de trouver quel utilisateur a provoqué cet événement (il ne fait pas partie de FileSystemEventArgs).

+0

en fait. J'utilise watcher, mais quand j'essaye d'obtenir le nom d'utilisateur comme ceci: System.Security.AccessControl.FileSecurity sec = nouveau FileSecurity (Chemin, System.Security.AccessControl.AccessControlSections.Owner); renvoie sec.GetOwner (typeof (System.Security.Principal.NTAccount)). Valeur; il lève une exception en raison de ne peut pas déterminer l'utilisateur – user295518

+0

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

1

Je ne sais pas si cela peut être récupéré à partir du système de fichiers, mais une façon possible est d'utiliser l'objet av FileSystemWatcher pour déclencher un événement sur Deleted. L'inconvénient est que vous devez avoir l'application observateur en cours d'exécution tout le temps. Un avantage est que vous pouvez surveiller juste un dossier spécifique si c'est faisable.

+0

semble que FileSystemWatcher ne fournit pas d'informations sur l'utilisateur qui a supprimé le fichier ... – user295518

+0

Non, mais je pensais que peut-être il pourrait être accessible à travers le fichier. Vous devriez obtenir l'utilisateur qui a changé le fichier, pas le propriétaire. Mais de toute façon, le fichier est probablement déjà supprimé alors. C'est pourquoi vous obtenez l'exception, je suppose. –

+0

Peut-être que vous pourriez comprendre comment accéder aux informations de fichier du fichier supprimé à partir de ce code source? http://ntfsundelete.com/downloads/ –

Questions connexes