Jak identifikovat proces, který uzamkl soubor ve Windows

Když se pokusíte odstranit soubor nebo složku, kterou používá proces, zobrazí se dialogové okno Soubor se používá s názvem programu, který soubor zamkl.

Existují však případy, kdy dialogové okno „Soubor se používá“ nezobrazuje název procesu, který má zámek na souboru, který se pokoušíte odstranit. V některých případech se v dialogovém okně zobrazí „akci nelze dokončit, protože soubor je otevřen v jiný proces“.

Zjistěte, který proces uzamkl soubor

Pro zkoumání procesů a zamčených souborů je pravděpodobně první možností, která většině uživatelů přijde na mysl, Průzkumník procesů Windows Sysinternals. Jsou však dva vestavěná řešení pro zobrazení aktuálního seznamu otevřených souborů spolu s odpovídajícími názvy procesů.

Najděte, který proces uzamkl soubor, pomocí:

  1. Sledování prostředků (resmon.exe)
  2. Process Explorer od společnosti Microsoft Sysinternals
  3. Rukojeť od Microsoft Sysinternals
    • Najděte popisovač souboru pomocí nabídky po kliknutí pravým tlačítkem
  4. Openfiles.exe vestavěný nástroj konzoly
    • Povolit sledování místních popisovačů souborů
    • Zobrazte otevřené soubory a odpovídající názvy procesů
    • Odpojte otevřené soubory ze sdílených složek
  5. OpenedFilesView z Nirsoft.net (třetí strana)

1. Monitor zdrojů

Resource Monitor (resmon.exe) je vestavěný nástroj, který má mnoho užitečných funkcí. S Resource Monitor můžete sledovat aktuální využití sítě a internetu, zobrazit související úchyty pro uzamčené souborya také spravovat procesy stejně jako pomocí Správce úloh.

Chcete-li najít název procesu, který má soubor zamčený, klepněte na kartu CPU, zadejte název souboru nebo jeho část do textového pole Associated Handles.

Zjistěte, který proces uzamkl soubor

Sledování zdrojů jsme probrali dříve. Podívejte se na tyto články:

  • Jak pomocí nástroje Resource Monitor zjistit, který proces uzamkl soubor?
  • Který program využívá celou vaši internetovou šířku pásma? Použijte Resource Monitor k nalezení

2. Process Explorer

Process Explorer není třeba představovat. V Process Exploreru stačí použít funkci Najít a zadat název souboru. To ukazuje proces, který přistupuje k souboru.

Zjistěte, který proces uzamkl soubor

V zobrazení spodního panelu můžete v případě potřeby zavřít popisovač souboru.

Abyste mohli spravovat procesy, které jsou spuštěny na vyšší úrovni, musíte spustit Process Explorer jako správce. Chcete-li povýšit Process Explorer, klepněte na nabídku Soubor → Zobrazit podrobnosti pro všechny procesy.

Podívejte se na tyto související články Process Explorer:

  • Jak odstranit tvrdohlavý neodstranitelný soubor nebo složku v systému Windows?
  • Zjistěte, který program aktuálně používá vaši webovou kameru
  • Jak zjistit, který program způsobil neznámou chybovou zprávu?
  • Co znamená Neúspěšný výčet objektů v kontejneru?

3. Rukojeť z Windows Sysinternals

Rukojeť je nástroj od společnosti Microsoft Sysinternals, který zobrazuje informace o otevřených úchytech pro jakýkoli proces v systému. Můžete jej použít k zobrazení programů, které mají otevřený soubor, nebo k zobrazení typů objektů a názvů všech ovladačů programu. Handle je jako verze příkazového řádku Process Explorer.

Poznámka: Handle v4.21 má a malá chyba kde vždy hlásí „Nebyly nalezeny žádné odpovídající úchyty“, pokud je písmeno jednotky velké. Doufám, že to Microsoft opraví v příští aktualizaci.

Od an Příkazový řádek admin okně, použijte syntaxi příkazového řádku k nalezení procesu, který má soubor otevřený:

handle.exe -a -u soubor_s_cestou

Pokud název souboru obsahuje mezery, uzavřete jej do dvojitých uvozovek.

Příklad:

handle.exe -a -u "c:\users\ramesh\desktop\Mandate-form.pdf"
zjistit, který proces zamknutý soubor - sysinternals zvládnout

(Uvedení názvu souboru bez cesty nemusí nutně fungovat v každé situaci. Je vhodné vždy uvést celou cestu.)

Výstup zobrazuje název procesu, identifikátor procesu, uživatelské jméno, název uzamčeného (cílového) souboru s cestou.

Sysinternals Handle: Argumenty příkazového řádku

použití: handle [[-a [-l]] [-u] | [-c [-y]] | [-s]] [-p |] [jméno] [-nobanner]
-A Vypište všechny informace o rukojeti.
-l Stačí zobrazit úchyty oddílů zálohované stránkovacím souborem.
-C Zavře zadaný úchyt (interpretovaný jako hexadecimální číslo).
Proces musíte specifikovat pomocí jeho PID. VAROVÁNÍ: Zavírání úchytů může způsobit nestabilitu aplikace nebo systému.
-y Nevyžadovat potvrzení zavření rukojeti.
-s Počet výtisků každého typu otevřené rukojeti.
-u Při hledání úchytů zobrazit vlastnící uživatelské jméno.
-p Úchyty výpisu patřící procesu (přijímá se částečný název).
název Hledejte úchyty objektů pomocí (fragment přijat).
-nobanner Nezobrazujte úvodní banner a zprávu o autorských právech.

Žádné argumenty nevypíší všechny odkazy na soubory.

Přidejte Sysinternals Handle do nabídky po kliknutí pravým tlačítkem

Můžete přidat Sysinternals Handle do nabídky pravým tlačítkem myši pro soubory, abyste rychle našli program, který soubor uzamkl. Chcete-li jej přidat do kontextové nabídky, postupujte takto:

  1. Stažení Rukojeť z webu Microsoft Sysinternals.
  2. Zkopírujte soubory handle.exe & handle64.exe do složky – např. d:\nástroje
  3. Zkopírujte následující řádky kódu do programu Poznámkový blok a uložte soubor jako find_handle.vbs na trvalé místo.
    'Spustí nástroj Sysinternals Handle.exe s argumentem názvu souboru. '© Ramesh Srinivasan -- https://winhelponline.com/blog. 'Datum vytvoření: 29. března 2008. 'Aktualizované datum: 11. června 2019. „Pro všechny verze Windows, včetně Windows 10 Option Explicit. Dim objShell, WshShell, objFSO, sBaseKey, sFilename. Set objShell = CreateObject("Shell. Aplikace") Set WshShell = CreateObject("WScript. Shell") Set objFSO = CreateObject("Skriptování. FileSystemObject") Pokud WScript. Argumenty. Count = 0 Then 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" Jinak Pokud objFSO.FileExists (WScript. Argumenty (0)) = True Pak sFilename = lcase (WScript. Argumenty (0)) objShell. ShellExecute "cmd.exe", "/k d:\tools\handle.exe -a -u " & _ & sSoubor &, "", "runas", 1 End If. End If

    Poznámka: Cesta Sysinternals Handle.exe je pevně zakódována jako d:\tools\handle.exe ve výše uvedeném skriptu. Pokud je program umístěn na jiné cestě, upravte odpovídajícím způsobem cestu ve skriptu. Pro 64bitový systém Windows můžete použít kterýkoli z nich handle.exe nebo handle64.exe

  4. Dvojklik find_handle.vbs přidat položku kontextové nabídky do registru. Budete to muset udělat pouze jednou. Pokud však skript přemístíte do jiné složky, budete na něj muset znovu dvakrát kliknout, abyste aktualizovali cestu v registru.
  5. Uvidíte Najít rukojeť možnost, když kliknete pravým tlačítkem na soubor. Kliknutím na něj spustíte skript, který zase spustí handle.exe s argumentem názvu souboru, aby našel proces, který má soubor zamčený.zjistit, který proces zamknutý soubor - sysinternals zvládnout

Chcete-li odstranit Najít rukojeť položka kontextové nabídky, spusťte Editor registru (regedit.exe) a smažte následující klíč:

HKEY_CURRENT_USER\Software\Classes\*\shell\FindHandle

4. OpenFiles.exe — vestavěný nástroj konzoly

Dalším vestavěným nástrojem, který budeme používat, je Openfiles.exe, nástroj konzoly, který není ve Windows novinkou. Původně byl představen v roce 2000 jako součást nástrojů Windows Resource Kit 2000/2003. Tato utilita pak byla standardně obsažena ve Windows Vista a vyšších (včetně Windows 10). Openfiles zobrazuje aktuálně otevřený seznam souborů z místních nebo sdílených složek spolu s ID úchytu a názvem spustitelného souboru procesu. Tento nástroj také umožňuje odpojit jeden nebo více souborů, které jsou otevřeny vzdáleně, ze sdílené složky.

Poprvé povolte globální příznak „Udržovat seznam objektů“.

Nejprve, chcete-li povolit sledování místních popisovačů souborů, musíte zapnout příznak ‚udržovat seznam objektů‘ spuštěním následujícího příkazu z příkazového řádku správce.

openfiles /local on

Zobrazí se následující zpráva:

INFO: Systémový globální příznak ‚udržovat seznam objektů‘ je aktuálně povolen.

Tento příkaz budete muset spustit pouze poprvé. Poté restartujte systém Windows, aby se změna projevila.

Zobrazte otevřené soubory a odpovídající názvy procesů

Po restartování Windows, z an Příkazový řádek admin okno, typ:

otevřené soubory

Zde jsou uvedeny ID souboru/handle, název procesu a seznam souborů otevřených lokálně nebo vzdáleně otevřených prostřednictvím místních sdílených bodů ve formátu tabulky.

Chcete-li zobrazit výstup ve formátu List nebo CSV, použijte parametr /query.

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

Chcete-li zkopírovat výstup do schránky, přesuňte výstup do Clip.exe, jak je uvedeno níže. Poté vložte výstup do programu Poznámkový blok nebo jiného editoru podle vašeho výběru.

openfiles |klip
Zjistěte, který proces uzamkl soubor
openfiles /query /FO LIST |klip. openfiles /query /FO CSV |klip
Zjistěte, který proces uzamkl soubor

Další informace o kopírování výstupu příkazového řádku do schránky nebo uložení výstupu do souboru najdete v článku Jak zkopírovat výstupní text příkazového řádku do schránky nebo uložit do souboru?

Chcete-li zjistit, zda je určitý soubor používán programem (a zjistit, který program), můžete použít následující příkazový řádek.

otevřít soubory | findstr /i 

Příklad:

otevřít soubory | findstr /i eiffel

Výše uvedený příkaz vypíše všechny otevřené soubory, které obsahují slovo „eiffel“ v názvu souboru. V tomto příkladu má Word 2016 aktuálně zámek nad souborem „Eiffelova věž.docx“ (ID 4576).

Zjistěte, který proces uzamkl soubor

A dialogové okno „File In Use“ mi říká to samé.

Zjistěte, který proces uzamkl soubor

Odpojte vzdáleně otevřené soubory ze sdílené složky.

Chcete-li odpojit soubory otevřené ze sdílené složky, abyste mohli soubor odstranit, přejmenovat nebo upravit obsah, použijte /disconnect parametr pro přerušení připojení k tomuto souboru. Zde jsou možnosti příkazového řádku.

OPENFILES /Disconnect [/S system [/U uživatelské jméno [/P [heslo]]]] {[/ID id] [/A accessedby] [/O openmode]} [/OP openfile] Popis: Umožňuje správci odpojit soubory a složky, které byly otevřeny vzdáleně prostřednictvím sdílené položky složka. Seznam parametrů: /S system Určuje vzdálený systém, ke kterému se má připojit. /U [doména\]uživatel Určuje kontext uživatele, pod kterým se má příkaz spustit. /P [heslo] Určuje heslo pro daný kontext uživatele. /ID ID Určuje odpojení otevřených souborů podle ID souboru. Lze použít zástupný znak "*". /A accessedby Určuje odpojení všech otevřených souborů pomocí hodnoty "accessedby". Lze použít zástupný znak "*". /O openmode Určuje odpojení všech otevřených souborů pomocí hodnoty "openmode". Platné hodnoty jsou Read, Write nebo Read/Write. Lze použít zástupný znak "*". /OP openfile Určuje odpojení všech připojení otevřených souborů vytvořených konkrétním názvem "otevřeného souboru". Lze použít zástupný znak "*". /? Zobrazí tuto zprávu nápovědy. Příklady: OPENFILES /Odpojit /? OPENFILES /Odpojit /ID 1 OPENFILES /Odpojit /Uživatelské jméno OPENFILES /Odpojit /O Číst/Zapisovat OPENFILES /Odpojit /OP "c:\My Documents\somedoc.doc" /ID 234 OPENFILES /Odpojit /S system /U uživatelské jméno /ID 5 OPENFILES /Odpojit /S system /U uživatelské jméno /P heslo /ID *

Openfiles.exe dokonale plní práci se seznamem všech otevřených souborů spolu s názvy procesů, ale nemůže násilně zabíjet procesy. Tento vynikající (ale přehlížený) vestavěný konzolový nástroj se vám může hodit, když chcete rychle najít název procesu, který soubor nebo k odpojení souboru, ke kterému síťový uživatel přistupuje prostřednictvím sdílené složky – bez závislosti na třetí straně řešení.

5. OpenedFilesView

OpenedFilesView od společnosti Nirsoft zobrazí seznam všech otevřených souborů ve vašem systému. Pro každý otevřený soubor se zobrazí další informace: hodnota manipulace, přístup pro čtení/zápis/mazání, pozice souboru, proces který soubor otevřel a další... Volitelně můžete také zavřít jeden nebo více otevřených souborů nebo zavřít proces, který tyto soubory otevřel soubory.

Zjistěte, který proces uzamkl soubor

Můžete zavřít procesy vybraných souborů nebo zavřít vybrané popisovače souborů. Číslo rukojeti je uvedeno v hexadecimálních hodnotách, zatímco konzolový nástroj openfiles.exe jej zobrazuje v normálním formátu. Tento nástroj vám také umožňuje přidat možnost kontextové nabídky pro rychlé vyhledání procesu, který aktuálně používá soubor, pomocí nabídky po kliknutí pravým tlačítkem. Možnost kontextové nabídky / podpora příkazového řádku považuji za jednu z nejužitečnějších funkcí nabízených OpenedFilesView.


Jedna malá prosba: Pokud se vám tento příspěvek líbil, sdílejte jej prosím?

Jedno "drobné" sdílení od vás by vážně hodně pomohlo růstu tohoto blogu. Některé skvělé návrhy:
  • Připnout!
  • Sdílejte to na svůj oblíbený blog + Facebook, Reddit
  • Tweetujte!
Takže moc děkuji za podporu, můj čtenáři. Nezabere to více než 10 sekund vašeho času. Tlačítka sdílení jsou vpravo dole. :)

Ezoicnahlásit tento inzerát