Как прервать доступ к файлу в Программе.NET

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

11
задан Fionnuala 2 March 2010 в 13:01
поделиться

5 ответов

Здесь есть очень похожая тема: Как я могу предотвратить создание папки с помощью службы Windows? . Это может дать больше информации, но @LBushkin уже сделал такой же вывод.

1
ответ дан 3 December 2019 в 09:40
поделиться

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

Перехватить доступ к файлам нелегко.

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

Чего вы пытаетесь достичь, может быть, есть более простая альтернатива?

7
ответ дан 3 December 2019 в 09:40
поделиться

Проверьте http://easyhook.codeplex.com/ , он предоставляет вам прямо из C # c ++, например перезапись метода dll.

1
ответ дан 3 December 2019 в 09:40
поделиться

Интересный вопрос. Какой вид доступа? Чтение, запись, удаление, копирование?

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

  • Если вы хотите остановить доступ на уровне системы, то вам понадобится фильтр IFS.

  • Если весь доступ осуществляется через ваш код, то я бы предложил библиотеку, которая предотвращает доступ.

  • И, как уже упоминали другие люди, есть FileSystemWatcher, но я думаю, что в этом посте доступ не раньше.

0
ответ дан 3 December 2019 в 09:40
поделиться

Использование только .net невозможно

2
ответ дан 3 December 2019 в 09:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: