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.