Отмена блокировки общего файлового ресурса Windows

StackOverflow https://stackoverflow.com/questions/320128

  •  11-07-2019
  •  | 
  •  

Вопрос

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

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

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

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

Это было полезно?

Решение 2

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

<Ол>
  • Найдите процесс, используя Process Проводник :

    <Ол>
  • Загрузите и извлеките procexp.exe
  • В Process Explorer используйте " Поиск дескриптора или DLL ... " команда от " Найти " Меню
  • введите имя каталога, в котором возникают проблемы с удалением
  • Должен отображаться список открытых файлов, которые соответствуют этому имени. Возьмите некоторые догадки и найдите, какой из них не удаляется. Если файл заблокирован общим ресурсом Windows, процесс, содержащий файл, будет System
  • Запишите каталог, который был оставлен открытым
  • Загрузите и установите Unlocker ( Предупреждение : ссылка удалена, так как содержит вредоносное ПО)

    <Ол>
  • Установите Unlocker, отключив опцию для расширений Explorer и другой нежелательной почты
  • Разблокировать каталог

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

    Другие советы

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

    <Ол>
  • Старт & # 8594; Мой компьютер & # 8594; Щелкните правой кнопкой мыши & # 8594; Управление доставит вас к компьютеру Консоль управления
  • В левой навигационной панели перейдите к Системные инструменты & # 8594; Общие папки
  • Вы можете просматривать общие ресурсы, сеансы и Откройте файлы здесь. Это позволяет узнать, кто какие файлы открыл с каких рабочих станций.
  • Щелкните правой кнопкой мыши элемент в списке, чтобы снять блокировку файла.
  • Надеюсь, это поможет.

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

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

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

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

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

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

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

    D: \ Projects > net share Projects / DELETE / Y

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

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

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

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

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

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

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

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

    контролировать ресурсы: perfmon.exe / res

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

    Лицензировано под: CC-BY-SA с атрибуция
    Не связан с StackOverflow
    scroll top