Дізнайтеся, який процес блокує файл або папку в Windows


715

Як я можу дізнатися, який процес блокує файл чи папку в Windows?

Наприклад, при спробі видалити папку Windows повідомляє про це:

Дію неможливо завершити, оскільки папка відкрита в іншій програмі

Так само відбувається з файлом, але як я можу дізнатися, яка програма чи програма зараз його використовує, і не дозволяє мені видалити файл чи папку?



1
Ваш файл - це відео? Ви можете виявити, що сам Windows Explorer "використовує" файл ...
DisgruntledGoat

37
Як це дублікат? Він спеціально запитує, як дізнатися, який процес блокує файл, а не як видалити заблокований файл.
b1nary.atr0phy

8
Я не можу додати тут вбудовану, простішу відповідь, оскільки вона була неправильно позначена як дуп, і я не можу додати її до іншого потоку, оскільки це стосується лише XP. Але в будь-якому випадку для версій Windows з монітором ресурсів (введіть його в рядку пошуку) перейдіть на вкладку CPU / Associated Handles, а потім знайдіть файл або папку.
jontyc

Я дізнався, що в Windows 10 (і я думаю, що ще в Windows 7) є програма під назвою Монітор ресурсів, яка дозволяє вам бачити, які процеси блокують файл або папку: stackoverflow.com/a/24126882/470749
Ryan

Відповіді:


67

Метод PowerShell:

IF((Test-Path -Path $FileOrFolderPath) -eq $false) {
    Write-Warning "File or directory does not exist."       
}
Else {
    $LockingProcess = CMD /C "openfiles /query /fo table | find /I ""$FileOrFolderPath"""
    Write-Host $LockingProcess
}

openfilesКоманда повинна мати підтримку для локальних файлів включені, запустивши openfiles /local onі перезапуск.

Детальніше Як дізнатися, який процес блокує файл або папку в Windows


12
Спершу цю функцію потрібно ввімкнутиopenfiles /local on
mstrange

5
На жаль, openfilesсхоже, це не працює на 64-бітній Windows:ERROR: The target system must be running a 32 bit OS.
Thomas S.

1
Працює над програмою Win10 64
Майкл

3
Схоже, ви могли в основному досягти цього в чистому cmd openfiles /query /fo table | find /I "<path>"?
mwfearnley

1
... Якщо ми готові перезапустити, щоб увімкнути щось, чому б ми не просто перезапустили доступ до папки? Я не розумію, як це вирішило проблему ОП, коли "просто перезавантажте свою машину" було б набагато простіше і все-таки потрібна перезавантаження.
Нік Хартлі

689

Ви можете використовувати Монітор ресурсів для цього, який вбудований в Windows 7, 8 та 10.

  1. Монітор відкритих ресурсів , який можна знайти
    • Шукаючи Монітор ресурсів або resmon.exe у меню запуску, або
    • Як кнопка на вкладці « Продуктивність » у вашому диспетчері завдань
  2. Перейдіть на вкладку ЦП
  3. Використовуйте поле пошуку в Associated Рукоятки розділу
    • Дивіться синю стрілку на знімку екрана нижче

Знайшовши ручку, ви можете ідентифікувати процес, переглянувши стовпець Зображення та / або PID.

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

Скріншот монітора ресурсів


18
Примітка: Монітор ресурсів у моєму випадку не знайшов жодних асоційованих ручок, тоді як процесор Process Explorer (як описано вище ).
ComFreek

15
@ComFreek Добре, ProcessExplorer може бути більш потужним у багатьох випадках, але для мене Resource Monitor завжди знаходив додаток, що блокує файл, з яким я намагаюся щось робити. Я також віддаю перевагу це Process Explorer просто тому, що він знаходиться прямо там в ОС. Не потрібно додаткового завантаження та додаткового ярлика десь.
Свиш

8
Я не зміг знайти це в Провіднику процесів, але їх було легко знайти за допомогою цих інструкцій у Менеджері ресурсів. Дякую.
Тетяна Рачева

6
@ComFreek У моєму випадку це був просто інший випадок: Провідник процесів не знайшов ручку, тоді як Resource Monitor це зробив.
Уве Кеїм

9
+1 - це також чудово працює у Windows 10
Метт Іннес

390

Пара варіантів:

Провідник процесів Microsoft / SysInternals - перейдіть до пошуку> Знайти обробку або DLL. У текстовому полі "Обробляти або підстрочку DLL:" введіть шлях до файлу (наприклад, "C: \ path \ to \ file.txt") і натисніть "Пошук". Усі процеси, які мають відкриту ручку до цього файлу, повинні бути перелічені.

WhoLockMe - розширення Explorer, яке додає опцію меню правою кнопкою миші

NB Здається, WhoLockMe не працює з Win 10 (принаймні, я не зміг зареєструвати його в жодній із 32- або 64-розрядних версій regsvr32.exe).


26
Якщо ви намагаєтесь видалити заблокований файл у Windows 7, повідомлення про помилку підкаже, який процес заблокований
Garry English

10
ПРИМІТКА: Unlocker встановлює Adware, якщо ви не обережні. З їх веб-сайту: "Рекламна функція: Повністю додаткова панель інструментів Delta".
Юліанський лицар

11
@GarryEnglish чомусь це не завжди так. Мені просто довелося скористатися procexp, щоб сказати мені, що блокнот ++ мав блокування в папці. Windows 7 не змогла сказати мені винуватця.
GuiSim

4
@ jpmc26 Ні. WhoLockMe не працює у Windows 7.
від

3
@ GarryEnglish- Як зазначає GuiSim, це точно не завжди так, і на мій досвід, це рідко.
КГВР

196

Погляньте на Process Explorer ( procexp.exe).

З моменту його впровадження:

Ви коли-небудь замислювалися про те, яка програма відкриває певний файл чи каталог? Тепер ви можете це дізнатися.

Щоб дізнатися, який процес використовує певний файл, виконайте наступні дії:

  1. Перейдіть до Find , Find Handle або DLL .. або просто натисніть Ctrl+ F.

    Введіть тут опис зображення

  2. Введіть назву файла та натисніть Пошук .

    Введіть тут опис зображення

  3. Провідник процесів перелічить усі процеси, у яких відкрита ручка до файлу. Клацніть на запис, щоб сфокусувати процес у головному вікні.

    Введіть тут опис зображення

  4. За бажанням ви навіть можете закрити ручку вручну через нижню панель ( Ctrl+ L):

    Введіть тут опис зображення


6
Хакер процесів також може це зробити.
Бенуа

5
Як згадується ще одна відповідь , Handle - це інструмент командного рядка від SysInternals, який також виконає це завдання.
важкий

Я забув відкрити в папці cmd-процес, провідник процесів допоміг мені це помітити.
davejal

Зауважимо, Google, здається, поточна версія PE вже не підтримує Закрити ручку
MickyD

Не вдалося працювати в Win10 64-розрядному 1709
K7AAY

30

LockHunter може розблокувати будь-які обробники, які, можливо, заблокували ваші файли чи папки. На відміну від подібних безкоштовних програм, він підтримує як 32, так і 64-бітні Windows.

Це безкоштовний інструмент для видалення файлів, заблокованих чимось, чого ви не знаєте. LockHunter корисний для боротьби зі шкідливим програмним забезпеченням та іншими програмами, які блокують файли без причини. На відміну від інших подібних інструментів, він видаляє файли в кошик, щоб ви могли відновити їх, якщо видалити помилково.

  • Показує процеси блокування файлу чи папки
  • Дозволяє розблокувати, видалити, скопіювати або перейменувати заблокований файл
  • Дозволяє вбити процес блокування
  • Дозволяє видалити процеси блокування з жорсткого диска
  • Інтегрується в меню Провідника
  • Він видаляє файли в кошик, тому ви можете відновити їх, якщо видалити помилково
  • Підтримує 32 та 64-бітні Windows

5
Дві найкращі відповіді не спрацювали, і наступні, які були запрошені, або були заблоковані моїм брандмауером, або попередили не звертатися до мого хрому !. LockHunter прекрасно працював.
користувач3885927

1
Мисливець на удачу працював на мене тоді, коли інших цього не було
ШелдонH

Цей працює.
jdhao

10

EMCO UnlockIT може визначити процес, який заблокував файл, а також розблокувати файл, щоб ви могли його видалити / редагувати / перемістити. Програма абсолютно безкоштовна, хоча новіша версія трохи повільніше і більш роздута, ніж у оригіналу (яка мала звичайний, непорушений графічний інтерфейс, але завантажена майже миттєво і без дратівливого екрана сплеску). Крім того, оригінальна версія, яка автоматично з'являється, коли виникає згадана вами помилка, що дозволяє миттєво розблокувати файл та виконати операцію, яку ви намагалися.

І все-таки UnlockIT - це неймовірно корисна програма, яка забезпечує основний функціонал, якого критично не вистачає у Windows. Це один із стандартних наборів інструментів, які я встановлюю на всіх комп'ютерах Windows, на яких я працюю.


@John: Добре, він ідентифікує програму, яка заблокувала файл. І ви все одно можете вручну вбити процес через диспетчер завдань. Однак зазвичай простіше просто розблокувати файл (особливо коли провідник заблокував файл більшу частину часу), а не вбити процес, який його заблокував (як правило, через доступ до файлу та залишення обробника файлу відкритим через глюк програми).
Lèse majesté

2

Тут було моє відкриття та рішення.

Між іншим, жодна з наведених відповідей не вирішила моєї проблеми.

Я навіть спробував використовувати UNLOCKER, який виявився марним.

Моєю проблемою була проблема резервного копіювання Memeo Autosync

Мабуть, цей процес резервного копіювання залишає достатньо файлу, що нагадує привид. Цей "подібний на привид файл" відображатиметься кожного разу, коли я ALT-TAB мій комп'ютер (Windows Professional XP), тобто я побачив би дві програми MS Excel, що працювали, коли я бачив лише ОДИН на моєму штриху завдань.

Я натрапив на це рішення, коли подумав, що це може бути захист кінцевої точки SYMANTEC (антивірус); і відключив програму. Однак я продовжував отримувати повідомлення про помилку:

не може видалити (файл LARGE.xls): ним використовується інша людина чи програма. Закрийте будь-які програми, які можуть використовувати цей файл, і повторіть спробу.

Згодом я продовжував бачити сповіщення Memeo про "синхронізацію" і ЗАБЕЗПЕЧИТИ програму.

Згодом БЕЗ ПОМИЛКИ.

Для вас це може бути будь-яким із цих фонових заощаджень.


2

Якщо ви не знаєте програми, яку файл використовує, ви можете перейти до "Мій комп'ютер"; клацніть правою кнопкою миші; виберіть Керувати. У розділі Системні інструменти> Спільні папки> Відкриті файли ви маєте змогу побачити користувача, який заблокував файл. Ви можете закрити файл звідси, а потім можете виконати завдання перейменувати або видалити файл. Сподіваюсь, це допомагає


1
Це працюватиме лише для спільних папок.
sweetfa

1

Додаткова можливість, просто заощадити людям час, який я щойно провів:

У старих версіях Windows, можливо, ви отримаєте "Заборонено доступ - у вас може не бути прав або файл може використовуватися". Якщо через Process Explorer ви виявите, що файли насправді ніхто не відкриває, шанси на те, що існує проблема із безпекою. За допомогою облікового запису адміністратора виберіть файли в Провіднику, клацніть правою кнопкою миші та виберіть Властивості, Безпека, Додатково, Власник. Шанси полягають у тому, що ці файли належать обліковому запису, який більше не існує або його більше не можна перевірити (через зміну налаштувань довіри Active Directory).

Змініть право власності на адміністраторів, і ви готові йти.


0

Багато програм тут застаріли. Нарешті я в кінцевому підсумку використовував OpensFilesView nirsoft, який працював дуже добре.

Знімок екрана

Хоча найкраща частина - інтеграція меню Explorer, яку легко включити. Відповідно до веб-сайту

Контекстне меню Explorer

Починаючи з версії 1.10, ви можете запустити OpenedFilesView безпосередньо з Провідника Windows і переглянути лише ручки файлу чи папки, які ви хочете перевірити. Щоб увімкнути цю функцію, перевірте "Увімкнути контекстне меню провідника" в меню "Параметри". Після ввімкнення цієї функції ви можете клацнути правою кнопкою миші будь-який файл або папку в Провіднику Windows і вибрати в меню пункт "OpenedFilesView". Якщо запустити параметр OpenedFilesView для папки, вона відобразить усі відкриті файли всередині цієї папки. Якщо ви запустите для файлу опцію OpenedFilesView, вона відобразить усі відкриті ручки для цього файлу.

контекстне меню

Цей інструмент все ще надійно працює у 2019 році

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.