Я хотел бы либо разместить виртуальный диск, либо перехватить ввод-вывод, либо перехватить вызовы ввода-вывода в определенные папки на жестком диске, а делать произвольные вещи для этого вызова, например, записать файл во второе место. Например, если Notepad.exe записывает файл в C: \ Data \ test.txt - я хотел бы иметь доступ к этому имени файла и данным файла. Аналогично, я хотел бы запустить произвольный код, когда любой пользователь пытается прочитать C: \ Data \ test.txt или пытается получить список каталогов для C: \ Data.Как перехватить вызовы API Win32 с C#?
В идеале я хочу иметь обработчик, когда файл: создан, обновлен, удален или открыт - и когда кто-то делает список каталогов (из командной строки или из командной оболочки).
Я могу сделать запись с помощью FileSystemWatcher - но я не могу перехватить диск «reads». Итак, я посмотрел в MS Detours и EasyHook. Это не будет работать, потому что мне нужно будет следить за каждым процессом на компьютере и подключаться к OpenFile для ВСЕХ из них. Я не хочу использовать расширение оболочки, потому что это поведение должно существовать и из командной строки. Таким образом, это оставляет либо запись драйвера файловой системы MiniFilter, либо запись моей собственной устанавливаемой файловой системы на C++.
У меня может быть часть этого в C++ - хотя материал драйвера немного над моей головой, но в конечном итоге большая часть остального кода должна быть в C# в идеале.
Есть ли какой-либо простой способ перехвата ввода-вывода в конкретную папку или виртуальный диск? Если ответ с EasyHook или MiniFilter, есть ли у кого-нибудь образцы? В EasyHook, в частности, есть только образцы с конца 2000-х годов, и API с тех пор изменился. Благодаря!
Если у вас достаточно большой бюджет, я считаю, что есть хотя бы один сторонний продукт, который реализует программируемый драйвер фильтра файловой системы. –
Этого не может быть и речи. Я посмотрел, и я не мог найти ничего, что бы это сделало. Вы можете рекомендовать какой-либо продукт? –
Не из личного опыта, нет. Но я нашел ссылку на продукт, о котором я думал: см. Http://stackoverflow.com/a/3541555/886887 –