Как получить эксклюзивную блокировку процесса для папки в Windows? - PullRequest
3 голосов
/ 17 марта 2011

Можно ли заблокировать каталог в Windows, чтобы гарантировать, что никакой другой процесс не будет считывать или изменять файлы внутри каталога на время блокировки, в то же время позволяя процессу с блокировкой изменять и перемещать файлы и сама директория свободно?

1 Ответ

0 голосов
/ 21 июня 2013

Это не реальный ответ, а обходной путь:

Переместите каталог в подкаталог, определенный для вашего приложения, который находится на том же томе.

Преимущества:

  • Запрещает пользователям и другим программам изменять файл в старом местоположении, так как файлы больше не будут там
  • Важно, что произойдет сбой, если у процесса уже есть файл, открытый в этом каталоге, что гарантирует, что «полученная» блокировка действительно будет «исключительной»

Недостатки:

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