Cum să identifici procesul care a blocat un fișier în Windows

Când încercați să ștergeți un fișier sau un folder care este utilizat de un proces, apare caseta de dialog Fișier în uz care arată numele programului care a blocat fișierul.

Cu toate acestea, există cazuri în care dialogul „Fișier în uz” nu arată numele procesului care are o blocare pe fișierul pe care încercați să îl ștergeți. În unele cazuri, dialogul va afișa „acțiunea nu poate fi finalizată deoarece fișierul este deschis în alt proces“.

Găsiți ce proces a blocat un fișier

Pentru investigarea proceselor și a fișierelor blocate, Windows Sysinternals Process Explorer este probabil prima opțiune care vine în minte pentru majoritatea utilizatorilor. Cu toate acestea, sunt două soluții încorporate pentru a afișa lista curentă de fișiere deschise împreună cu numele proceselor corespunzătoare.

Găsiți ce proces a blocat un fișier folosind:

  1. Monitorul resurselor (resmon.exe)
  2. Process Explorer de la Microsoft Sysinternals
  3. Mâner de la Microsoft Sysinternals
    • Găsiți mânerul fișierului prin meniul de clic dreapta
  4. Instrumentul de consolă încorporat Openfiles.exe
    • Activați urmărirea mânerelor de fișiere locale
    • Vizualizați fișierele deschise și numele proceselor corespunzătoare
    • Deconectați fișierele deschise din folderele partajate
  5. OpenedFilesView de la Nirsoft.net (a treia parte)

1. Monitorul resurselor

Resource Monitor (resmon.exe) este un instrument încorporat care are multe caracteristici utile. Cu Resource Monitor, puteți urmăriți utilizarea actuală a rețelei și a internetului, vizualizați mânerele asociate pentru fișiere blocate, precum și gestionați procesele așa cum ați folosi Managerul de activități.

Pentru a găsi numele procesului care are un fișier blocat, faceți clic pe fila CPU, introduceți numele fișierului sau o parte a acestuia în caseta de text Mânere asociate.

Găsiți ce proces a blocat un fișier

Am abordat mai devreme Resource Monitor. Consultați aceste articole:

  • Cum să utilizați Monitorul resurselor pentru a găsi ce proces a blocat un fișier?
  • Ce program folosește toată lățimea de bandă de internet? Utilizați Resource Monitor pentru a-l găsi

2. Process Explorer

Process Explorer nu are nevoie de prezentare. În Process Explorer, tot ce trebuie să faceți este să utilizați caracteristica Găsiți și să introduceți numele fișierului. Aceasta arată procesul care accesează fișierul.

Găsiți ce proces a blocat un fișier

Din panoul inferior de vizualizare, puteți închide mânerul fișierului dacă este necesar.

Trebuie să rulați Process Explorer ca administrator pentru a gestiona procesele care rulează la nivel ridicat. Pentru a ridica Process Explorer, faceți clic pe meniul Fișier → Afișați detalii pentru toate procesele.

Consultați aceste articole legate de Process Explorer:

  • Cum să ștergeți un fișier sau un folder încăpățânat neșters în Windows?
  • Găsiți ce program utilizează camera dvs. web în prezent
  • Cum să găsiți ce program a provocat un mesaj de eroare necunoscut?
  • Ce înseamnă a eșuat la enumerarea obiectelor din container?

3. Manevrare de la Windows Sysinternals

Mâner este un utilitar de la Microsoft Sysinternals care afișează informații despre mânerele deschise pentru orice proces din sistem. Îl puteți folosi pentru a vedea programele care au un fișier deschis sau pentru a vedea tipurile de obiecte și numele tuturor mânerelor unui program. Handle este ca o versiune de linie de comandă a Process Explorer.

Notă: Mânerul v4.21 are un bug mic unde raportează întotdeauna „Nu s-au găsit mânere care se potrivesc” dacă litera de unitate este cu majuscule. Sper că Microsoft o rezolvă în următoarea actualizare.

De la un Prompt de comandă admin fereastră, utilizați sintaxa liniei de comandă pentru a găsi procesul care are fișierul deschis:

handle.exe -a -u nume_fișier_cu_cale

Dacă numele fișierului conține spații, includeți-l între ghilimele duble.

Exemplu:

handle.exe -a -u "c:\utilizatori\ramesh\desktop\Mandate-form.pdf"
găsiți ce proces fișierul blocat - gestionează sysinternals

(Menționarea numelui fișierului fără calea poate să nu funcționeze neapărat în orice situație. Este recomandabil să includeți întotdeauna calea completă.)

Ieșirea arată numele procesului, identificatorul procesului, numele utilizatorului, numele fișierului blocat (țintă) cu calea.

Sysinternals Handle: argumente din linia de comandă

utilizare: mâner [[-a [-l]] [-u] | [-c [-y]] | [-s]] [-p |] [nume] [-nobanner]
-A Eliminați toate informațiile despre mâner.
-l Doar afișați mânerele secțiunilor susținute de fișiere de pagină.
-c Închide mânerul specificat (interpretat ca număr hexazecimal).
Trebuie să specificați procesul prin PID. AVERTISMENT: Închiderea mânerelor poate cauza instabilitate a aplicației sau a sistemului.
-y Nu solicitați confirmarea mânerului apropiat.
-s Numărul de imprimări pentru fiecare tip de mâner deschis.
-u Afișați numele de utilizator proprietar atunci când căutați mânere.
-p Dump-urile aparținând procesului (nume parțial acceptat).
Nume Căutați mânere pentru obiecte cu (fragment acceptat).
-nobanner Nu afișați bannerul de pornire și mesajul privind drepturile de autor.

Niciun argument nu va elimina toate referințele la fișiere.

Adăugați mânerul Sysinternals la meniul de clic dreapta

Puteți adăuga Sysinternals Handle la meniul de clic dreapta pentru fișiere pentru a găsi rapid programul care a blocat fișierul. Pentru a-l adăuga în meniul contextual, urmați acești pași:

  1. Descarca Mâner de pe site-ul Microsoft Sysinternals.
  2. Copiați fișierele handle.exe & handle64.exe într-un folder – de ex., d:\instrumente
  3. Copiați următoarele linii de cod în Notepad și salvați fișierul ca find_handle.vbs într-o locație permanentă.
    „Rulează utilitarul Sysinternals Handle.exe cu argument nume de fișier. '© Ramesh Srinivasan -- https://winhelponline.com/blog. „Data creării: 29 martie 2008. „Data actualizată: 11 iunie 2019. „Pentru toate versiunile de Windows, inclusiv Windows 10 Opțiune explicită. Dim objShell, WshShell, objFSO, sBaseKey, sFilename. Set objShell = CreateObject("Shell. Aplicație") Setați WshShell = CreateObject("WScript. Coajă") Set objFSO = CreateObject("Scripting. FileSystemObject") Dacă WScript. Argumente. Număr = 0 Apoi sBaseKey = "HKCU\Software\Classes\*\shell\" WshShell. RegWrite sBaseKey și „FindHandle\”, „Find Handle”, „REG_SZ” WshShell. RegWrite sBaseKey & „FindHandle\command\”, „wscript.exe „ & & _ WScript. ScriptFullName & & " " & & "%1" &, "REG_SZ" Altfel, dacă objFSO.FileExists (WScript. Argumente (0)) = Adevărat Apoi sFilename = lcase (WScript. Argumente (0)) objShell. ShellExecute "cmd.exe", "/k d:\tools\handle.exe -a -u " & _ & sFilename &, "", "runas", 1 End If. Încheiați dacă

    Notă: Calea Sysinternals Handle.exe este codificată ca d:\tools\handle.exe în scriptul de mai sus. Dacă programul se află pe o cale diferită, modificați calea în script în consecință. Pentru Windows pe 64 de biți, puteți utiliza oricare handle.exe sau handle64.exe

  4. Dublu click find_handle.vbs pentru a adăuga intrarea din meniul contextual în registru. Va trebui să faci asta o singură dată. Dar, dacă mutați scriptul într-un folder diferit, va trebui să faceți dublu clic pe el din nou pentru a actualiza calea din registry.
  5. Veți vedea Găsiți mâner opțiunea când faceți clic dreapta pe un fișier. Făcând clic pe acesta, va lansa scriptul care, la rândul său, rulează handle.exe cu argumentul nume de fișier pentru a găsi procesul care are fișierul blocat.găsiți ce proces fișierul blocat - gestionează sysinternals

Pentru a elimina Găsiți mâner intrarea din meniul contextual, porniți Editorul de registry (regedit.exe) și ștergeți următoarea cheie:

HKEY_CURRENT_USER\Software\Classes\*\shell\FindHandle

4. OpenFiles.exe — un instrument de consolă încorporat

Un alt instrument încorporat pe care îl vom folosi este Openfiles.exe, un instrument de consolă care nu este nou pentru Windows. A fost introdus inițial în 2000 ca parte a instrumentelor Windows Resource Kit 2000/2003. Acest utilitar a fost apoi inclus implicit în Windows Vista și versiuni ulterioare (inclusiv Windows 10). Openfiles afișează lista de fișiere deschise în prezent din folderele locale sau partajate, împreună cu ID-ul de gestionare și numele executabilului proces. Acest instrument vă permite, de asemenea, să deconectați unul sau mai multe fișiere care sunt deschise de la distanță dintr-un folder partajat.

Activați pentru prima dată indicatorul global „Menține lista de obiecte”.

În primul rând, pentru a activa urmărirea mânerelor de fișiere locale, trebuie să activați indicatorul „menține lista de obiecte” rulând următoarea comandă din promptul de comandă admin.

openfiles /local activat

Veți vedea următorul mesaj:

INFORMAȚII: Indicatorul global al sistemului „menține lista de obiecte” este activat în prezent.

Va trebui să rulați această comandă doar pentru prima dată. Apoi reporniți Windows pentru ca modificarea să intre în vigoare.

Vizualizați fișierele deschise și numele proceselor corespunzătoare

După repornirea Windows, dintr-un Prompt de comandă admin fereastra, tastați:

openfiles

Acesta listează ID-ul fișierului/handlei, numele procesului și lista fișierelor deschise local sau deschise de la distanță prin puncte de partajare locale, într-un format de tabel.

Pentru a vizualiza rezultatul în formate Listă sau CSV, utilizați parametrul /query.

openfiles /query /FO LIST. openfiles /query /FO CSV

Pentru a copia ieșirea în clipboard, direcționați ieșirea către Clip.exe, ca mai jos. Apoi lipiți rezultatul în Notepad sau în orice alt editor la alegere.

openfiles |clip
Găsiți ce proces a blocat un fișier
openfiles /query /FO LIST |clip. openfiles /query /FO CSV |clip
Găsiți ce proces a blocat un fișier

Pentru mai multe informații despre copierea ieșirii din Prompt de comandă în clipboard sau salvarea rezultatului într-un fișier, consultați articolul Cum să copiați textul de ieșire din promptul de comandă în clipboard sau să salvați în fișier?

Pentru a afla dacă un anumit fișier este utilizat de un program (și pentru a ști ce program), puteți utiliza următoarea linie de comandă.

openfiles | findstr /i 

Exemplu:

openfiles | findstr /i eiffel

Comanda de mai sus listează toate fișierele deschise care conțin cuvântul „eiffel” în numele fișierului. În acest exemplu, Word 2016 are în prezent blocarea fișierului „Turnul Eiffel.docx” (ID 4576).

Găsiți ce proces a blocat un fișier

Și dialogul „Fișier în uz” îmi spune același lucru.

Găsiți ce proces a blocat un fișier

Deconectați fișierele deschise de la distanță din folderul partajat.

Pentru a deconecta fișierele deschise din folderul partajat, astfel încât să puteți șterge, redenumi fișierul sau modifica conținutul, utilizați /disconnect parametru pentru a întrerupe conexiunile la acel fișier. Iată opțiunile din linia de comandă.

OPENFILES /Deconectați [/S sistem [/U nume utilizator [/P [parolă]]]] {[/ID ID] [/A accesat de] [/O openmode]} [/OP openfile] Descriere: permite unui administrator să deconecteze fișierele și folderele care au fost deschise de la distanță printr-un partajat pliant. Lista parametri: /S sistem Specifică sistemul la distanță la care se va conecta. /U [domeniu\]utilizator Specifică contextul utilizatorului în care ar trebui să se execute comanda. /P [parolă] Specifică parola pentru contextul utilizatorului dat. /ID id Specifică deconectarea fișierelor deschise după ID-ul fișierului. Se poate folosi wildcardul „*”. /A accessedby Specifică deconectarea tuturor fișierelor deschise după valoarea „accessedby”. Se poate folosi wildcardul „*”. /O openmode Specifică deconectarea tuturor fișierelor deschise după valoarea „openmode”. Valorile valide sunt Read, Write sau Read/Write. Se poate folosi wildcardul „*”. /OP fișier deschis Specifică deconectarea tuturor conexiunilor de fișier deschis create de un anumit nume de „fișier deschis”. Se poate folosi wildcardul „*”. /? Afișează acest mesaj de ajutor. Exemple: OPENFILES /Deconectare /? OPENFILES /Deconectare /ID 1 OPENFILES /Deconectare /Un nume de utilizator OPENFILES /Deconectare /O Citire/Scriere OPENFILES /Deconectare /OP "c:\My Documents\somedoc.doc" /ID 234 OPENFILES /Deconectare /S sistem /U nume utilizator /ID 5 OPENFILES /Deconectare /S sistem /U nume utilizator /P parola /ID *

Openfiles.exe face perfect treaba de a enumera toate fișierele deschise împreună cu numele proceselor, dar nu poate ucide procesele forțat. Cu toate acestea, acest instrument de consolă încorporat excelent (dar trecut cu vederea) poate fi util atunci când doriți să găsiți rapid un nume de proces care folosește un fișier sau pentru a deconecta un fișier care este accesat printr-un folder partajat de către un utilizator de rețea - fără a depinde de o terță parte soluţie.

5. OpenedFilesView

OpenedFilesView de la Nirsoft afișează lista tuturor fișierelor deschise pe sistemul dumneavoastră. Pentru fiecare fișier deschis sunt afișate informații suplimentare: valoarea de gestionare, acces de citire/scriere/ștergere, poziția fișierului, procesul care a deschis fișierul și multe altele... Opțional, puteți, de asemenea, să închideți unul sau mai multe fișiere deschise sau să închideți procesul care le-a deschis fișiere.

Găsiți ce proces a blocat un fișier

Puteți închide procesele fișierelor selectate sau puteți închide mânerele fișierelor selectate. Numărul mânerului este reprezentat în valori hexadecimale, în timp ce instrumentul de consolă openfiles.exe îl arată în format normal. Acest instrument vă permite, de asemenea, să adăugați o opțiune de meniu contextual pentru a găsi rapid procesul care utilizează în prezent un fișier, prin meniul cu clic dreapta. Opțiunea meniului contextual / suportul pentru linia de comandă, consider, este una dintre cele mai utile caracteristici oferite de OpenedFilesView.


O mică cerere: dacă ți-a plăcut această postare, te rog să distribui asta?

Un „mic” share din partea ta ar ajuta foarte mult la dezvoltarea acestui blog. Câteva sugestii grozave:
  • Fixați-l!
  • Distribuie-l pe blogul tău preferat + Facebook, Reddit
  • Trimiteți-l pe Tweet!
Așa că vă mulțumesc foarte mult pentru sprijin, cititorul meu. Nu va dura mai mult de 10 secunde din timpul dvs. Butoanele de partajare sunt chiar mai jos. :)

Ezoicraporteaza acest anunt