Мне нужно перехватить, когда система пытается получить доступ к файлу, и сделать что-то до того, как это произойдет.
Как перехватить доступ к файлу в .NET-программе
Ответ 1
Вы можете использовать FileSystemWatcher
- но это не позволяет вам перехватывать событие и делать что-то перед рукой - оно только информирует вас после тот факт, что определенный файл или каталог каким-то образом затронут.
Перехват доступа к файлам - это не то, что вы можете сделать легко.
Вы можете написать фильтр файловой системы, который является неуправляемой DLL, которую загрузит O/S, которая может операции перехвата файлов или папок. Однако это не тривиальная задача.
Что вы пытаетесь достичь, возможно, есть более простая альтернатива?
Ответ 2
Использование только .net невозможно
Ответ 3
Здесь очень похожая тема: Как я могу предотвратить создание папки с помощью службы Windows?. Это может дать более глубокое понимание, но @L.Bushkin уже сделал тот же вывод.
Ответ 4
Отметьте http://easyhook.codeplex.com/, он предоставляет вам непосредственно из С# С++, например, для перезаписи dll.
Ответ 5
Интересный вопрос. Какой доступ? Читать, писать, удалять, копировать?
-
Если вам нужно предотвратить доступ к файлу, то безопасность будет именно таким. Затем вы можете захватить доступ и делегировать задачу более высокопривилегированному механизму выполнения. Например, служба, работающая как пользователь с более высокими привилегиями.
-
Если вы хотите остановить доступ к системному уровню, вам понадобится фильтр IFS.
-
Если весь доступ осуществляется через ваш код, я предлагаю библиотеку, которая предотвращает доступ.
-
И, как говорили другие люди, есть FileSystemWatcher, но я думаю, что этот пост не раньше.