Снятие блокировок файловых ресурсов Windows

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

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

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

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

Вау. Неужели нет способа предотвратить это в Windows? Как ... Мягко говоря, неудивительно. По крайней мере, Samba может это сделать.

rubenvb 31.01.2017 19:30
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
36
1
85 125
6
Перейти к ответу Данный вопрос помечен как решенный

Ответы 6

Ответ принят как подходящий

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

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

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

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

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

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

Глупый вопрос, но: где мне запустить программу, если у меня такая же проблема, как у OP? Компьютер, использующий общий доступ к файлу, или компьютер, использующий его?

Salman A 29.12.2012 00:28

@SalmanA: запустите его на компьютере, на котором хранится файл (компьютер, предоставляющий доступ к файлу)

alldayremix 10.07.2013 20:04

Предлагаю удалить ссылку на приложение Unlocker. Теперь он содержит шпионское ПО (см. Ниже).

Charles Burns 23.12.2015 01:15

Этот ответ действительно нужно удалить. Unlocker теперь является источником вредоносного ПО.

DAG 04.04.2016 17:17

Намного лучший ответ Чарльза Бернса ниже, используйте "Process Hacker"

Michael 08.02.2018 00:29

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

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

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

Если вы закроете сеанс, он просто восстановится и, конечно же, не снимет блокировку. Вы хоть раз пробовали свое предложение?

Riegardt Steyn 13.05.2014 16:51

Это зависит от ситуации. Это тоже сработало для меня. Зависшие сеансы, блокирующие мои файлы.

Gideon Mulder 27.03.2017 17:10

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

Хакер процессов похож на Process Explorer на стероидах.

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

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

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

Терминатора не было в версии 2.39.124. Я смог щелкнуть правой кнопкой мыши дескриптор файла и выбрать «закрыть»

Michael 08.02.2018 00:27

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

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

D: \ Projects> чистая доля Projects / DELETE / Y

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

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

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

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

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

Взято из: Http://www.sysadmit.com/2017/06/windows-how-to-know-that-process-has-open-a-file.html

Я пытаюсь понять эту команду. Разве это не просто перезапустить / открыть программу Performance Monitor в Windows? Я не понимаю, как он определит конкретный файл, который вы пытаетесь исправить.

Gabriel Fair 26.04.2018 15:58

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

OpenFiles: для отключения сеансов обмена файлами

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

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

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