2010-03-30 8 views
6

Necesito saber qué archivo eliminado por el usuario en el sistema de archivos del código C#. Sólo una idea es utilizar la auditoría, pero parecen ser muy lento ...¿Cómo puedo obtener el usuario que eliminó el archivo?

+0

¿De qué es esta "auditoría" de la que habla? – BlueMonkMN

+1

@BlueMonkMN: Eso podría ser esto: auditoría de acceso NTFS - http://support.microsoft.com/kb/310399; esa parece ser la opción más simple; después de todo, esto se acerca más al núcleo que al espacio de usuario, por lo que debería capturar todos los eventos de acceso a archivos (no estoy seguro sobre el acceso al disco de bajo nivel, pero probablemente no sea necesario aquí). Sin embargo, no tengo experiencia en ajustarlo. – Piskvor

+0

No quiero usar la auditoría porque tendré muchos archivos y realmente enviará correo no deseado al registro del sistema – user295518

Respuesta

2

Usted puede utilizar el evento FileSystemWatcher.Deleted de captura, se eliminan pasando en el sistema de archivos.

Dependiendo de la aplicación, en ese momento también podrá averiguar qué usuario causó este evento (no es parte de FileSystemEventArgs).

+0

, de hecho. Estoy usando Watcher, pero cuando trato de obtener un nombre de usuario como este: System.Security.AccessControl.FileSecurity sec = new FileSecurity (Path, System.Security.AccessControl.AccessControlSections.Owner); return sec.GetOwner (typeof (System.Security.Principal.NTAccount)). Valor; arroja una excepción debido a que no puede determinar el usuario – user295518

+0

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

1

No sé si esto se puede recuperar del sistema de archivos, pero una forma posible es usar el objeto de FileSystemWatcher para desencadenar un evento en Eliminado. La desventaja es que necesita tener la aplicación Watcher ejecutándose todo el tiempo. Una ventaja es que puede controlar solo una carpeta específica si es factible.

+0

parece que FileSystemWatcher no proporciona información sobre el usuario que eliminó el archivo ... – user295518

+0

No, pero pensé que tal vez se podía acceder a través del archivo. Tendría que obtener el usuario que cambió el archivo, no el propietario. Pero de todos modos, el archivo probablemente ya está eliminado entonces. Es por eso que obtienes la excepción, supongo. –

+0

¿Tal vez podría averiguar cómo acceder a la información de archivo del archivo eliminado desde este código fuente? http://ntfsundelete.com/downloads/ –

Cuestiones relacionadas