"Fare la cosa giusta non è sempre fare la cosa giusta"..Prendo in prestito una celebre frase di un noto film per introdurre una possibile soluzione alternativa a quanto suggerito da MItaly, sicuramente la più corretta da un punto di vista teorico; in VB.NET esiste un controllo denominato FileSystemWatcher che monitora tutto ciò che avviene in una determinata cartella (creazione/modifica/cancellazione/apertura files) per cui - adeguatamente implementato - questo metodo può essere risolutivo.Originariamente inviato da MItaly
Non è una questione banale, credo sia necessario scrivere codice che gira in kernel-mode per monitorare tutte le aperture e chiusure dei file (o comunque iniettare del proprio codice in tutti i processi in esecuzione e fare mestieri tipo IAT patching & co. su un numero non indifferente di API); in ogni caso, VB.NET non è adatto.
Per la spiegazione del controllo, rimando a MSDN.