Ako identifikovať proces, ktorý uzamkol súbor v systéme Windows

Keď sa pokúsite odstrániť súbor alebo priečinok, ktorý používa proces, zobrazí sa dialógové okno Súbor sa používa s názvom programu, ktorý súbor uzamkol.

Existujú však prípady, keď dialógové okno „Súbor sa používa“ nezobrazuje názov procesu, ktorý má uzamknutý súbor, ktorý sa pokúšate odstrániť. V niektorých prípadoch sa v dialógovom okne zobrazí „akciu nemožno dokončiť, pretože súbor je otvorený v iný proces“.

Zistite, ktorý proces uzamkol súbor

Pri skúmaní procesov a uzamknutých súborov je Windows Sysinternals Process Explorer pravdepodobne prvou možnosťou, ktorá väčšine používateľov napadne. Sú však dve vstavané riešenia na zobrazenie aktuálneho zoznamu otvorených súborov spolu s príslušnými názvami procesov.

Zistite, ktorý proces uzamkol súbor, pomocou:

  1. Monitor zdrojov (resmon.exe)
  2. Process Explorer od spoločnosti Microsoft Sysinternals
  3. Rukoväť od Microsoft Sysinternals
    • Nájdite popisovač súboru pomocou ponuky kliknutím pravým tlačidlom myši
  4. Vstavaný nástroj konzoly Openfiles.exe
    • Povoliť sledovanie lokálnych popisovačov súborov
    • Zobrazte otvorené súbory a príslušné názvy procesov
    • Odpojte otvorené súbory zo zdieľaných priečinkov
  5. OpenedFilesView z Nirsoft.net (tretia strana)

1. Monitor zdrojov

Resource Monitor (resmon.exe) je vstavaný nástroj, ktorý má mnoho užitočných funkcií. S monitorom zdrojov môžete sledovať aktuálne používanie siete a internetu, zobraziť súvisiace rukoväte pre uzamknuté súbory, ako aj spravovať procesy rovnako, ako by ste používali Správcu úloh.

Ak chcete nájsť názov procesu, ktorý má súbor zamknutý, kliknite na kartu CPU, zadajte názov súboru alebo jeho časť do textového poľa Associated Handles.

Zistite, ktorý proces uzamkol súbor

Sledovaniu zdrojov sme sa venovali skôr. Pozrite si tieto články:

  • Ako pomocou nástroja Resource Monitor zistiť, ktorý proces uzamkol súbor?
  • Ktorý program využíva celú vašu internetovú šírku pásma? Na nájdenie použite nástroj Resource Monitor

2. Process Explorer

Process Explorer netreba predstavovať. V Process Explorer všetko, čo musíte urobiť, je použiť funkciu Nájsť a zadať názov súboru. Toto ukazuje proces, ktorý pristupuje k súboru.

Zistite, ktorý proces uzamkol súbor

V spodnej časti okna môžete v prípade potreby zatvoriť popisovač súboru.

Process Explorer musíte spustiť ako správca, aby ste mohli spravovať procesy, ktoré sú spustené povýšene. Ak chcete povýšiť Process Explorer, kliknite na ponuku Súbor → Zobraziť podrobnosti pre všetky procesy.

Pozrite si tieto súvisiace články Process Explorer:

  • Ako odstrániť tvrdohlavý neodstrániteľný súbor alebo priečinok v systéme Windows?
  • Zistite, ktorý program momentálne používa vašu webovú kameru
  • Ako zistiť, ktorý program spôsobil neznáme chybové hlásenie?
  • Čo znamená Nepodarilo sa vymenovať objekty v kontajneri?

3. Rukoväť od Windows Sysinternals

Rukoväť je pomôcka od spoločnosti Microsoft Sysinternals, ktorá zobrazuje informácie o otvorených úchytoch pre akýkoľvek proces v systéme. Môžete ho použiť na zobrazenie programov, ktoré majú otvorený súbor, alebo na zobrazenie typov objektov a názvov všetkých rukovätí programu. Handle je ako verzia príkazového riadku Process Explorer.

Poznámka: Rukoväť v4.21 má a malý chrobáčik kde vždy hlási „Nenašli sa žiadne zodpovedajúce úchyty“, ak je písmeno jednotky veľké. Dúfam, že to Microsoft opraví v ďalšej aktualizácii.

Od an Príkazový riadok správcu okno, pomocou syntaxe príkazového riadka nájdite proces, ktorý má súbor otvorený:

handle.exe -a -u názov_súboru_s_cestou

Ak názov súboru obsahuje medzery, uzatvorte ho do dvojitých úvodzoviek.

Príklad:

handle.exe -a -u "c:\users\ramesh\desktop\Mandate-form.pdf"
nájsť, ktorý proces zamknutý súbor - sysinternals zvládnuť

(Uvedenie názvu súboru bez cesty nemusí nevyhnutne fungovať v každej situácii. Odporúča sa vždy zahrnúť celú cestu.)

Výstup zobrazuje názov procesu, identifikátor procesu, meno používateľa, názov uzamknutého (cieľového) súboru s cestou.

Sysinternals Handle: Argumenty príkazového riadka

použitie: rukoväť [[-a [-l]] [-u] | [-c [-y]] | [-s]] [-p |] [meno] [-nobanner]
-a Vypíšte všetky informácie o rukoväti.
-l Stačí zobraziť rukoväte sekcií podporované stránkovým súborom.
-c Zatvorí zadaný popisovač (interpretovaný ako hexadecimálne číslo).
Proces musíte špecifikovať pomocou jeho PID. VAROVANIE: Zatvorenie rukovätí môže spôsobiť nestabilitu aplikácie alebo systému.
-y Nevyžadovať potvrdenie zatvorenia rukoväte.
-s Počet výtlačkov každého typu otvorenej rukoväte.
-u Pri vyhľadávaní kľučiek zobrazte meno vlastníka.
-p Rukoväte výpisov patriace procesu (akceptuje sa čiastočný názov).
názov Hľadajte rukoväte objektov pomocou (prijatý fragment).
-nobanner Nezobrazujte úvodný banner a správu o autorských právach.

Žiadne argumenty nevypíšu všetky odkazy na súbory.

Pridajte Sysinternals Handle do ponuky po kliknutí pravým tlačidlom myši

Môžete pridať Sysinternals Handle do ponuky pravým tlačidlom myši pre súbory, aby ste rýchlo našli program, ktorý uzamkol súbor. Ak ho chcete pridať do kontextového menu, postupujte takto:

  1. Stiahnuť ▼ Rukoväť zo stránky Microsoft Sysinternals.
  2. Skopírujte súbory handle.exe & handle64.exe do priečinka – napr. d:\tools
  3. Skopírujte nasledujúce riadky kódu do programu Poznámkový blok a uložte súbor ako find_handle.vbs na trvalé miesto.
    'Spustí nástroj Sysinternals Handle.exe s argumentom názvu súboru. '© Ramesh Srinivasan -- https://winhelponline.com/blog. 'Dátum vytvorenia: 29. marec 2008. „Dátum aktualizácie: 11. júna 2019. „Pre všetky verzie systému Windows vrátane systému Windows 10 Option Explicit. Dim objShell, WshShell, objFSO, sBaseKey, sFilename. Set objShell = CreateObject("Shell. Aplikácia") Nastaviť WshShell = CreateObject("WScript. Shell") Set objFSO = CreateObject("Skriptovanie. FileSystemObject") Ak WScript. Argumenty. Count = 0 Potom sBaseKey = "HKCU\Software\Classes\*\shell\" WshShell. RegWrite sBaseKey & "FindHandle\", "Find Handle", "REG_SZ" WshShell. RegWrite sBaseKey & "FindHandle\command\", "wscript.exe" & & & _ WScript. ScriptFullName & & " " & & "%1" &, "REG_SZ" Inak Ak objFSO.FileExists (WScript. Argumenty (0)) = Pravda Potom sFilename = lcase (WScript. Argumenty (0)) objShell. ShellExecute "cmd.exe", "/k d:\tools\handle.exe -a -u " & _ & sNázov súboru &, "", "runas", 1 End If. Koniec Ak

    Poznámka: Cesta Sysinternals Handle.exe je pevne zakódovaná ako d:\tools\handle.exe vo vyššie uvedenom skripte. Ak sa program nachádza na inej ceste, podľa toho upravte cestu v skripte. V prípade 64-bitového systému Windows môžete použiť ktorýkoľvek z nich handle.exe alebo handle64.exe

  4. Dvojité kliknutie find_handle.vbs pridať položku kontextového menu do registra. Budete to musieť urobiť iba raz. Ak však skript premiestnite do iného priečinka, budete naň musieť znova dvakrát kliknúť, aby ste aktualizovali cestu v registri.
  5. Uvidíte Nájsť rukoväť možnosť, keď kliknete pravým tlačidlom myši na súbor. Kliknutím naň sa spustí skript, ktorý následne spustí handle.exe s argumentom názvu súboru na nájdenie procesu, ktorý má súbor zamknutý.nájsť, ktorý proces zamknutý súbor - sysinternals zvládnuť

Ak chcete odstrániť Nájsť rukoväť položka kontextovej ponuky, spustite Editor databázy Registry (regedit.exe) a vymažte nasledujúci kľúč:

HKEY_CURRENT_USER\Software\Classes\*\shell\FindHandle

4. OpenFiles.exe — vstavaný nástroj konzoly

Ďalším vstavaným nástrojom, ktorý budeme používať, je Openfiles.exe, nástroj konzoly, ktorý nie je novinkou v systéme Windows. Pôvodne bol predstavený v roku 2000 ako súčasť nástrojov Windows Resource Kit 2000/2003. Táto pomôcka bola potom štandardne zahrnutá v systéme Windows Vista a novšom (vrátane systému Windows 10). Openfiles zobrazuje aktuálne otvorený zoznam súborov z lokálnych alebo zdieľaných priečinkov spolu s ID rukoväte a názvom spustiteľného súboru procesu. Tento nástroj vám tiež umožňuje odpojiť jeden alebo viac súborov, ktoré sú otvorené na diaľku, zo zdieľaného priečinka.

Prvýkrát povoľte globálny príznak „Udržať zoznam objektov“.

Po prvé, ak chcete povoliť sledovanie miestnych popisovačov súborov, musíte zapnúť príznak „udržať zoznam objektov“ spustením nasledujúceho príkazu z príkazového riadka správcu.

openfiles /local on

Uvidíte nasledujúcu správu:

INFO: Systémový globálny príznak „udržať zoznam objektov“ je momentálne povolený.

Tento príkaz budete musieť spustiť iba prvýkrát. Potom reštartujte systém Windows, aby sa zmena prejavila.

Zobrazte otvorené súbory a príslušné názvy procesov

Po reštartovaní systému Windows z an Príkazový riadok správcu okno, typ:

openfiles

Toto uvádza ID súboru/handle, názov procesu a zoznam súborov otvorených lokálne alebo otvorených vzdialene prostredníctvom lokálnych zdieľaných bodov vo formáte tabuľky.

Ak chcete zobraziť výstup vo formáte List alebo CSV, použite parameter /query.

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

Ak chcete skopírovať výstup do schránky, prepojte výstup do súboru Clip.exe, ako je uvedené nižšie. Potom prilepte výstup do programu Poznámkový blok alebo iného editora podľa vášho výberu.

openfiles |klip
Zistite, ktorý proces uzamkol súbor
openfiles /query /FO LIST |klip. openfiles /query /FO CSV |klip
Zistite, ktorý proces uzamkol súbor

Ďalšie informácie o kopírovaní výstupu príkazového riadka do schránky alebo o uložení výstupu do súboru nájdete v článku Ako skopírovať výstupný text príkazového riadka do schránky alebo uložiť do súboru?

Ak chcete zistiť, či program používa konkrétny súbor (a zistiť, ktorý program), môžete použiť nasledujúci príkazový riadok.

openfiles | findstr /i 

Príklad:

openfiles | findstr /i eiffel

Vyššie uvedený príkaz zobrazí zoznam všetkých otvorených súborov, ktoré obsahujú slovo „eiffel“ v názve súboru. V tomto príklade je Word 2016 momentálne uzamknutý nad súborom „Eiffelova veža.docx“ (ID 4576).

Zistite, ktorý proces uzamkol súbor

A dialógové okno „Súbor sa používa“ mi hovorí to isté.

Zistite, ktorý proces uzamkol súbor

Odpojte vzdialene otvorené súbory zo zdieľaného priečinka.

Ak chcete odpojiť súbory otvorené zo zdieľaného priečinka, aby ste mohli súbor odstrániť, premenovať alebo upraviť obsah, použite /disconnect parameter na prerušenie pripojení k tomuto súboru. Tu sú možnosti príkazového riadka.

OPENFILES /Odpojiť [/S systém [/U používateľské meno [/P [heslo]]]] {[/ID id] [/A prístup] [/O openmode]} [/OP openfile] Popis: Umožňuje správcovi odpojiť súbory a priečinky, ktoré boli otvorené vzdialene prostredníctvom zdieľaného súboru priečinok. Zoznam parametrov: /S system Určuje vzdialený systém, ku ktorému sa má pripojiť. /U [doména\]používateľ Určuje kontext používateľa, v ktorom sa má príkaz vykonať. /P [heslo] Určuje heslo pre daný kontext používateľa. /ID ID Určuje odpojenie otvorených súborov podľa ID súboru. Je možné použiť zástupný znak "*". /A accessedby Určuje odpojenie všetkých otvorených súborov podľa hodnoty "accessedby". Je možné použiť zástupný znak "*". /O openmode Určuje odpojenie všetkých otvorených súborov podľa hodnoty "openmode". Platné hodnoty sú Read, Write alebo Read/Write. Je možné použiť zástupný znak "*". /OP openfile Určuje odpojenie všetkých pripojení otvorených súborov vytvorených špecifickým názvom "otvoreného súboru". Je možné použiť zástupný znak "*". /? Zobrazí túto pomocnú správu. Príklady: OPENFILES /Odpojiť /? OPENFILES /Odpojiť /ID 1 OPENFILES /Odpojiť /A používateľské meno OPENFILES /Odpojiť /O Čítať/Zapisovať OPENFILES /Odpojiť /OP "c:\My Documents\somedoc.doc" /ID 234 OPENFILES /Odpojiť /S systém /U užívateľské meno /ID 5 OPENFILES /Odpojiť /S systém /U užívateľské meno /P heslo /ID *

Openfiles.exe dokonale zastáva zoznam všetkých otvorených súborov spolu s názvami procesov, ale nemôže násilne zabíjať procesy. Tento vynikajúci (ale prehliadaný) vstavaný nástroj konzoly sa vám môže hodiť, keď chcete rýchlo nájsť názov procesu, ktorý súbor alebo na odpojenie súboru, ku ktorému pristupuje cez zdieľaný priečinok sieťový používateľ – bez závislosti od tretej strany Riešenie.

5. OpenedFilesView

OpenedFilesView od spoločnosti Nirsoft zobrazí zoznam všetkých otvorených súborov vo vašom systéme. Pre každý otvorený súbor sa zobrazia ďalšie informácie: hodnota manipulácie, prístup na čítanie/zápis/vymazanie, pozícia súboru, proces ktorý otvoril súbor a ďalšie... Voliteľne môžete tiež zavrieť jeden alebo viacero otvorených súborov alebo zavrieť proces, ktorý ich otvoril súbory.

Zistite, ktorý proces uzamkol súbor

Môžete zavrieť procesy vybraných súborov alebo zatvoriť vybrané popisovače súborov. Číslo rukoväte je uvedené v hexadecimálnych hodnotách, zatiaľ čo konzolový nástroj openfiles.exe ho zobrazuje v normálnom formáte. Tento nástroj vám tiež umožňuje pridať možnosť kontextovej ponuky na rýchle vyhľadanie procesu, ktorý práve používa súbor, prostredníctvom ponuky po kliknutí pravým tlačidlom myši. Možnosť kontextového menu / podpora príkazového riadku považujem za jednu z najužitočnejších funkcií, ktoré ponúka OpenedFilesView.


Jedna malá prosba: Ak sa vám tento príspevok páčil, zdieľajte ho?

Jedno "drobné" zdieľanie od vás by vážne pomohlo rastu tohto blogu. Niekoľko skvelých návrhov:
  • Pripnúť!
  • Zdieľajte to na svojom obľúbenom blogu + Facebook, Reddit
  • Tweetujte!
Takže veľmi pekne ďakujem za podporu, môj čitateľ. Nezaberie vám to viac ako 10 sekúnd vášho času. Tlačidlá zdieľania sú nižšie. :)

Ezoicnahlásiť tento inzerát