2012-05-10 20 views

risposta

6

Che cosa il vostro chiedendo di fare può essere fatto. Gli scanner antivirus, ad esempio, lo fanno sempre. È possibile monitorare facilmente l'attività dei file con Process Monitor. Puoi anche farlo a livello di programmazione in C# usando FileSystemWatcher Class. Ma cercare di impedire a un programma di aprirsi o tentare di impedire a un programma di accedere al file non può essere fatto in C#. Dovrai usare C o C++. È necessario creare un File System Filter Driver. È una cosa complessa da costruire ma è esattamente ciò di cui hai bisogno. Per quotare 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 offre uno strumento gratuito chiamato Process Monitor, una funzione è quello di collegare a processi arbitrari Windows (incluse le applicazioni .NET) e la cattura chiamate di sistema, tra cui file aperto, chiuso, letto, ecc.

È possibile scaricarlo allo Process Monitor Download Page.

EDIT

Come ho riletto la tua domanda, vedo che si sta chiedendo intercettare ed eventualmente l'annullamento di tali operazioni. Credo che la classe FileSystemWatcher sia la soluzione migliore, anche se non penso che possa annullare unilateralmente le operazioni sui file - è necessario creare una sorta di meccanismo cooperativo per segnalare al chiamante di interrompere la sua operazione.

1

Sono abbastanza sicuro che devi entrare nel kernel per questo tipo di operazione e sono abbastanza sicuro che significa che dovrai codificare C. Osservare File System Drivers.

AGGIORNAMENTO: questo SO link può essere d'aiuto.

UPDATE: aggiunta una ricerca su Google per Windows File System Drivers

ANCHE What is a good resource to get started with Windows file system driver development?

+0

Link non funziona più. –

+0

@JamesWilkins deve essere stato temporaneo. Entrambi i link hanno funzionato per me. Migliore – kenny

Problemi correlati