2015-01-14 3 views
1

У меня есть приложение для winform C#.Переименовать/Переместить каталог, если он заблокирован в другом месте

У меня есть каталог 'd: \ MYDIR'

В моем коде я переименовать его в 'D: \ mydir2'

Если File Explorer открыт и 'MYDIR' выбран он будет возвращать ошибка разрешений.

Возможно ли переопределить это разрешение и запретить его переименование, несмотря на то, что любое другое внешнее приложение/процесс имеет доступ к одному и тому же каталогу (или/и его содержимому)?

благодаря

+2

Это то, что вам нужно представить, «что, если бы все это сделали». IE, если было переопределение, чтобы сказать: «Я знаю, что я делаю, переименуйте эту папку», что произойдет, если другой процесс сказал «Я знаю, что я делаю, не позволяйте кому-либо переопределять мою блокировку в этой папке ». Или поставьте себя в другие ботинки процесса: «Почему этот файл исчез из-под меня, несмотря на то, что я приобрел замок чтения/записи». Не сказать, что это невозможно, но нужно тщательно продумывать - блокировки файлов есть по какой-то причине. –

+1

Файловые замки контролируются операционной системой. Невозможно переопределить их вызовом API. – Phylogenesis

+0

Привет, ребята, да, пока я уже не делал кофе сейчас :) Я действительно подумал о том, «что, если сценарий» :) спасибо –

ответ

0

Возможные: Да (Если у вас есть права администратора)

  • Получить все процессы Process[] processlist = Process.GetProcesses();
  • отфильтровывать процесса, которые работают из этого каталога по названию тега (рискованный)
  • Наращивают (или выскакивают всплывающее мнение пользователя) закрывают эти процессы
  • Закрыть файл эксплорер окно
  • Переименуйте каталог

Если вы делаете это: Нет

Почему: Как Предложил Джеймс Торп в комментариях Что, если это программа на полпути через сохраняя большой документ, если вы его убьете, у вас есть поврежденный файл.

+1

Я считаю, что это плохой пользовательский опыт, если кто-то закрывает моего исследователя. – Dawnkeeper

+0

Привет, спасибо за ваше время. Я согласен с @Dawnkeeper на этом, я боюсь. Кроме того, я также заинтересован в блокировании других процессов/приложений –

+0

Как насчет отображения всплывающего окна и предоставления возможности пользователю, если он хочет закрыть его самостоятельно или принудительно с помощью кода C#? – mkkhedawat

Смежные вопросы