Отмена блокировки общего файлового ресурса Windows - PullRequest
29 голосов
/ 26 ноября 2008

Эта проблема возникает время от времени на работе. Наша сборочная машина может получить доступ к своим файлам через обычный файловый ресурс Windows. Если кто-то удаленно просматривает папку на машине и оставляет окно открытым на ночь, сборка завершается неудачно (как это было сделано сейчас). Окно проводника оставило открытые точки в одной из подпапок в исходном дереве. Сборка удаляет исходный код и выполняет чистую проверку перед сборкой. Удаление не удалось.

Прямо сейчас я хотел бы заставить сборку работать. Я вошел в систему из дома, и я бы не стал перезагружать сборочную машину. Я не могу заполучить человека, чья машина просматривает файлы, и не могу удаленно перезагрузить их машину.

Когда общий ресурс Windows имеет блокировку, процесс блокировки является системным, поэтому я не думаю, что смогу его убить, как при обычных блокировках.

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

Ответы [ 6 ]

24 голосов
/ 18 апреля 2014

Если вы являетесь администратором на сервере, разделяющем файл по сети, вы можете использовать встроенную функцию Windows:

  1. Пуск → Мой компьютер → Щелкните правой кнопкой мыши → Управление, чтобы получить доступ к компьютеру Консоль управления
  2. В левой навигационной панели перейдите к Системные инструменты → Общие папки
  3. Здесь вы можете просмотреть общие ресурсы, сессии и открытые файлы. Это позволяет узнать, кто какие файлы открыл с каких рабочих станций.
  4. Щелкните правой кнопкой мыши элемент в списке, чтобы можно было удалить блокировку файла.

Надеюсь, это поможет.

24 голосов
/ 26 ноября 2008

Нашли решение.

  1. Найдите процесс, используя Process Explorer :

    1. Загрузите и извлеките procxp.exe
    2. В Process Explorer используйте команду «Найти дескриптор или DLL ...» из меню «Найти»
    3. Введите имя каталога, в котором возникают проблемы с удалением
    4. Должен быть показан список открытых файлов, которые соответствуют этому имени. Возьмите некоторые догадки и найдите, какой из них не удаляется. Если файл заблокирован общим ресурсом Windows, процесс, содержащий файл, будет System
    5. Запишите каталог, который был оставлен открытым
  2. Загрузите и установите Unlocker ( Предупреждение : ссылка удалена, так как содержит вредоносное ПО)

    1. Устанавливаем Unlocker, отключаем опцию для расширений Проводника и прочего барахла
  3. Разблокировать каталог

    1. Откройте окно cmd и перейдите в C: \ Program Files \ Unlocker
    2. Из окна cmd запустите Unlocker.exe "путь к заблокированной папке"
    3. Появится диалоговое окно, подтверждающее снятие блокировки. Используйте кнопку разблокировки, чтобы разблокировать файл

Теперь каталог должен быть разблокирован и теперь может быть удален.

4 голосов
/ 23 декабря 2015

Попробуйте Process Hacker: https://wj32.org/processhacker/

Процессный хакер похож на Process Explorer на стероидах.

Чтобы найти нарушающий процесс, нажмите CTRL + F или нажмите кнопку «Найти дескрипторы DLL» и найдите имя файла.

Как только вы найдете файл в диалоговом окне поиска дескрипторов, вы можете просто щелкнуть файл правой кнопкой мыши и выбрать «закрыть». (как минимум для v2.39.124)

В старых версиях в контекстном меню процесса была опция «терминатор». Щелкните правой кнопкой мыши по процессу оскорбления -> Miscellaneous -> Terminator -> Выберите методы завершения . Обратите внимание, что некоторые из них могут быть опасными и иметь непредвиденные последствия.

1 голос
/ 03 февраля 2016

У меня были похожие проблемы, и ни одно из этих предложений, которые я видел выше, не подходило для автоматических ночных сборок (как и предполагалось в оригинальном плакате), потому что все они требуют ручного усилия, чтобы выследить и убить блокировки.

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

D: \ Проекты> Чистые общие проекты / DELETE / Y

Пользователи имеют открытые файлы в проектах. Продолжение операции приведет к закрытию файлов.

Проекты были успешно удалены.

(ПРИМЕЧАНИЕ. Повторное автоматическое создание общего ресурса может быть проблематичным, если группы привилегий, которые вам нужны, являются грязными.)

0 голосов
/ 14 февраля 2019

Я делаю это, используя OpenFiles.exe и Handle.exe Вы можете запускать их в любом порядке, и ваш ресурс будет полностью разблокирован.

OpenFiles: отключить сеансы обмена файлами

Handle.exe: освободить все открытые дескрипторы (не пытайтесь закрывать дескрипторы, принадлежащие pid4, так как это системный процесс)

Вы можете автоматизировать это, используя powershell, batch или любой другой язык по вашему выбору.

0 голосов
/ 04 июня 2017

Другой вариант, начиная с Windows Vista, использовать встроенный в систему инструмент Windows:

ресурсы монитора: perfmon.exe /res

Извлечено из: Http://www.sysadmit.com/2017/06/windows-how-to-know-that-process-has-open-a-file.html

...