Как заблокировать файл для других процессов на время работы программы?

Имеется конфигурационный .json-файл, и есть приложение, зарегистрированное в качестве windows-службы, которое этот файл считывает и десериализует. Необходимо на время работы службы сделать этот файл недоступным для редактирования, переименования и удаления другим процессом.
Пробовал открывать файл через
var fileStr = File.Open(filePath, FileMode.Open, FileAccess.Read, FileShare.None);

без последующего закрытия, но не помогло, файл все равно редактируется и сохраняется. Также пробовал оборачивать поток в специальный класс ( https://github.com/colgreen/Redzen/blob/master/Red... ), и это решение оказалось безуспешным.
  • Вопрос задан
  • 448 просмотров
Пригласить эксперта
Ответы на вопрос 4
@ilya06 Автор вопроса
Проблема была в том, что файл открывался в методе класса и присваивался локальной переменной. Была решена переносом переменной на уровень экземпляра класса.
Ответ написан
А если FileAccess.ReadWrite сделать? Потому как должно и в вашем варианте все работать
Ответ написан
  1. Запускать службу от специального пользователя.
  2. Дать пользователю права на редактирование этого файла, а остальным запретить
Ответ написан
sanchezzzhak
@sanchezzzhak
Ля ля ля...
FileStream.Lock()
пока прога работает и фаил на локе запись в файл может только ваш процесс, вот прочитать лоченый файл может любой.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы