Существует два подхода - с драйвером режима ядра (задокументированный) и без такого драйвера (хакерский способ).
С драйвером режима ядра у вас есть два пути - (1) создать драйвер виртуальной файловой системы (или взять существующий) и (2) создать драйвер фильтра файловой системы (или взять существующий). Разработка драйвера = год или около того работы, чтобы сделать правильно и полностью. Разработка драйверов полностью документирована в MSDN.
Без драйвера режима ядра вам нужно использовать перехват API. Такие библиотеки (как Detours, MadCodeHook и Boxedapp SDK) делают это (и позволяют делать то же самое).
Перехват темы API довольно велик, чтобы полностью описать ее здесь, но есть хорошая статья CodeProject на эту тему.