2012-05-10 14 views

Respuesta

6

Lo que su pidiendo que haga que se puede hacer. Los escáneres de virus, por ejemplo, lo hacen todo el tiempo. Puede supervisar fácilmente la actividad del archivo con Process Monitor. También puede hacerlo de forma programática en C# usando el FileSystemWatcher Class. Pero intentar evitar que un programa se abra o tratar de impedir que un programa acceda al archivo no se puede hacer en C#. Tendrá que usar C o C++. Necesita crear un File System Filter Driver. Es algo complejo de construir, pero es exactamente lo que necesitas. Para citar a MSDN:

A file system filter driver intercepts requests targeted at a file system or another file system filter driver. By intercepting the request before it reaches its intended target, the filter driver can extend or replace functionality provided by the original target of the request. Examples of file system filter drivers include anti-virus filters, backup agents, and encryption products.

2

Sysinternals ofrece una herramienta gratuita llamada Process Monitor, una de cuyas funciones es unir a los procesos arbitrarios de Windows (incluyendo aplicaciones .NET) y captura llamadas al sistema, incluido el archivo abierto, cerrado, leído, etc.

Puede descargarlo en el Process Monitor Download Page.

EDITAR

Como ya he vuelto a leer su pregunta, veo que usted está preguntando por interceptar y, posiblemente, la cancelación de tales operaciones. Creo que la clase FileSystemWatcher será tu mejor opción, aunque no creo que pueda cancelar las operaciones de archivos de forma unilateral. Tendrás que crear algún tipo de mecanismo cooperativo para indicarle a la persona que llama que suspenda su operación.

1

Estoy bastante seguro de que tienes que entrar en el kernel en ese tipo de operación y estoy bastante seguro de que eso significa que necesitarás codificar en C. Mira File System Drivers.

ACTUALIZACIÓN: este SO link puede ayudar.

ACTUALIZACIÓN: se ha añadido una búsqueda en Google de Windows File System Drivers

TAMBIÉN What is a good resource to get started with Windows file system driver development?

+0

El enlace ya no funciona. –

+0

@JamesWilkins debe haber sido temporal. Ambos enlaces me funcionaron. Mejor – kenny

Cuestiones relacionadas