Перехват файлов \ папок I / O без перехвата API или драйвера фильтра

Мне нужно написать программу для отображения окна пароля, когда пользователь пытается получить доступ к файлу или папке в C ++ для Win XP & выиграть 7 (как для 32-битных, так и для 64-битных).
Но сложная часть заключается в том, что я не могу использовать IAT \ EAT или встроенный перехват для этой задачи, так как для этого проекта требуется использовать немного поддерживаемый Microsoft метод.

Во время поисков в Google это также упоминалось на многих форумах, что это может быть достигнуто с помощью драйвера фильтра файловой системы, но мне интересно, как я могу показать диалоговое окно ввода пароля из мини-драйвера.

Я думаю, что расширение оболочки могло бы сделать эту работу, но документация msdn показывает, что расширение оболочки не может использоваться для перехвата вызова ввода-вывода.

Пожалуйста, совет, спасибо заранее.

7

Решение

Для этого вам нужен драйвер ядра. Перехваты и расширения оболочки активируются только при доступе к файлу через оболочку (например, по щелчку в проводнике Windows) и не запускаются, если к файлу напрямую обращаются другие программы.

У меня была похожая проблема при работе с антивирусом при доступе.

Но, как сказал @selbie, сам код драйвера не может обрабатывать какие-либо интерактивные запросы — для этого он должен взаимодействовать с кодом пользовательского режима. Это может быть автономное приложение или ваша DLL, автоматически загружаемая в каждый процесс. В моем случае, если ответ пользователя был необходим, у нас был драйвер и приложение пользовательского режима, связывающееся через каналы — драйвер передавал сообщение в приложение пользовательского режима (если оно было активным), а затем ждал ответа. Приложение выдало быстрый и ответный ответ водителю.

Тема перехвата ввода / вывода файла также обсуждалась в более ранней теме здесь.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]