Hur man identifierar processen som har låst en fil i Windows

När du försöker ta bort en fil eller mapp som används av en process, visas dialogrutan Fil i bruk som visar namnet på programmet som har låst filen.

Det finns dock fall där dialogrutan "Fil som används" inte visar namnet på processen som har ett lås på filen du försöker ta bort. I vissa fall kommer dialogrutan att visa "åtgärden kan inte slutföras eftersom filen är öppen i en annan process“.

Hitta vilken process som har låst en fil

För att undersöka processer och låsta filer är Windows Sysinternals Process Explorer förmodligen det första alternativet som kommer att tänka på för de flesta användare. Det finns dock två inbyggda lösningar för att visa den aktuella listan över öppna filer tillsammans med motsvarande processnamn.

Ta reda på vilken process som har låst en fil med:

  1. Resource Monitor (resmon.exe)
  2. Process Explorer från Microsoft Sysinternals
  3. Handtag från Microsoft Sysinternals
    • Hitta filhandtaget via högerklicksmenyn
  4. Openfiles.exe inbyggt konsolverktyg
    • Aktivera spårning av lokala filhandtag
    • Visa öppna filer och motsvarande processnamn
    • Koppla bort filer som öppnats från delade mappar
  5. OpenedFilesView från Nirsoft.net (tredje part)

1. Resursövervakare

Resource Monitor (resmon.exe) är ett inbyggt verktyg som har många användbara funktioner. Med Resource Monitor kan du spåra aktuell nätverks- och internetanvändning, se associerade handtag för låsta filer, samt hantera processer precis som du skulle använda Aktivitetshanteraren.

För att hitta processnamnet som har en låst fil, klicka på CPU-fliken, skriv filnamnet eller en del av det i textrutan Associated Handles.

Hitta vilken process som har låst en fil

Vi har täckt Resource Monitor tidigare. Kolla in dessa artiklar:

  • Hur man använder Resource Monitor för att hitta vilken process som har låst en fil?
  • Vilket program använder hela din Internetbandbredd? Använd Resource Monitor för att hitta den

2. Process Explorer

Process Explorer behöver ingen introduktion. I Process Explorer behöver du bara använda sökfunktionen och skriva in filnamnet. Detta visar processen som kommer åt filen.

Hitta vilken process som har låst en fil

Från den nedre rutan kan du stänga filhandtaget om det behövs.

Du måste köra Process Explorer som administratör för att hantera processer som körs förhöjda. För att höja Process Explorer, klicka på Arkiv-menyn → Visa detaljer för alla processer.

Kolla in dessa Process Explorer-relaterade artiklar:

  • Hur tar man bort en envis oraderbar fil eller mapp i Windows?
  • Hitta vilket program som använder din webbkamera för närvarande
  • Hur hittar man vilket program som orsakade ett okänt felmeddelande?
  • Vad betyder Misslyckades med att räkna upp objekt i behållaren?

3. Hantera från Windows Sysinternals

Hantera är ett verktyg från Microsoft Sysinternals som visar information om öppna handtag för alla processer i systemet. Du kan använda den för att se de program som har en fil öppen, eller för att se objekttyperna och namnen på alla handtag i ett program. Handle är som en kommandoradsversion av Process Explorer.

Notera: Handtag v4.21 har en liten bugg där det alltid rapporterar "Inga matchande handtag hittades" om enhetsbokstaven är i versaler. Hoppas Microsoft fixar det i nästa uppdatering.

Från en admin kommandotolk fönster, använd kommandoradssyntaxen för att hitta processen som har filen öppen:

handle.exe -a -u filnamn_med_sökväg

Om filnamnet innehåller mellanslag, omslut det inom dubbla citattecken.

Exempel:

handle.exe -a -u "c:\users\ramesh\desktop\Mandate-form.pdf"
hitta vilken process låst fil - sysinternals hantera

(Att nämna filnamnet utan sökvägen kanske inte nödvändigtvis fungerar i alla situationer. Det är tillrådligt att alltid inkludera hela vägen.)

Utdata visar processnamnet, processidentifieraren, användarnamnet, det låsta (mål)filnamnet med sökväg.

Sysinternals Hantera: Kommandoradsargument

användning: handtag [[-a [-l]] [-u] | [-c [-y]] | [-s]] [-p |] [namn] [-nobanner]
-a Dumpa all handtagsinformation.
-l Visa bara sidfilstödda avsnittshandtag.
-c Stänger det angivna handtaget (tolkas som ett hexadecimalt tal).
Du måste specificera processen genom dess PID. VARNING: Stängande handtag kan orsaka instabilitet i applikationen eller systemet.
-y Fråga inte efter bekräftelse på nära handtag.
-s Skriv ut antalet för varje typ av handtag öppet.
-u Visa det ägande användarnamnet när du söker efter handtag.
-s Dumphandtag som hör till processen (delnamn accepteras).
namn Sök efter handtag till objekt med (fragment accepterat).
-nobanner Visa inte startbannern och copyrightmeddelandet.

Inga argument kommer att dumpa alla filreferenser.

Lägg till Sysinternals Handle till högerklicksmenyn

Du kan lägga till Sysinternals Handle i högerklicksmenyn för filer för att snabbt hitta programmet som har låst filen. För att lägga till den i snabbmenyn, följ dessa steg:

  1. Ladda ner Hantera från Microsoft Sysinternals webbplats.
  2. Kopiera filerna handle.exe & handle64.exe till en mapp – t.ex. d:\verktyg
  3. Kopiera följande kodrader till Anteckningar och spara filen som find_handle.vbs till en permanent plats.
    'Kör Sysinternals Handle.exe-verktyget med filnamnsargument. '© Ramesh Srinivasan -- https://winhelponline.com/blog. 'Skapat datum: 29 mars 2008. 'Uppdaterat datum: 11 juni 2019. 'För alla versioner av Windows, inklusive Windows 10 Option Explicit. Dim objShell, WshShell, objFSO, sBaseKey, sFilename. Ange objShell = CreateObject("Shell. Ansökan") Ställ in WshShell = CreateObject("WScript. Skal") Ställ in objFSO = CreateObject("Scripting. FileSystemObject") Om WScript. Argument. Räkna = 0 Sedan sBaseKey = "HKCU\Software\Klasser\*\shell\" WshShell. RegWrite sBaseKey & "FindHandle\", "Find Handle", "REG_SZ" WshShell. RegWrite sBaseKey & "FindHandle\command\", "wscript.exe" & & _ WScript. ScriptFullName & & " " & & "%1" &, "REG_SZ" Annars om objFSO.FileExists (WScript. Argument (0)) = True Då sFilename = lcase (WScript. Argument (0)) objShell. ShellExecute "cmd.exe", "/k d:\tools\handle.exe -a -u " & _ & sFilename &, "", "runas", 1 End If. Avsluta om

    Notera: Sysinternals Handle.exe-sökvägen är hårdkodad som d:\tools\handle.exe i skriptet ovan. Om programmet ligger på en annan sökväg, ändra sökvägen i skriptet i enlighet med detta. För 64-bitars Windows kan du använda antingen handle.exe eller handle64.exe

  4. Dubbelklicka find_handle.vbs för att lägga till snabbmenyposten i registret. Du behöver bara göra detta en gång. Men om du flyttar skriptet till en annan mapp måste du dubbelklicka på det igen för att uppdatera sökvägen i registret.
  5. Du kommer att se Hitta handtag när du högerklickar på en fil. Genom att klicka på det startar skriptet som i sin tur kör handle.exe med filnamnsargumentet för att hitta processen som har filen låst.hitta vilken process låst fil - sysinternals hantera

För att ta bort Hitta handtag snabbmenypost, starta registerredigeraren (regedit.exe) och radera följande nyckel:

HKEY_CURRENT_USER\Software\Klasser\*\shell\FindHandle

4. OpenFiles.exe — ett inbyggt konsolverktyg

Ett annat inbyggt verktyg vi kommer att använda är Openfiles.exe, ett konsolverktyg som inte är nytt för Windows. Det introducerades ursprungligen 2000 som en del av Windows Resource Kit 2000/2003-verktyg. Det här verktyget inkluderades sedan som standard i Windows Vista och senare (inklusive Windows 10). Openfiles visar den för närvarande öppna fillistan från lokala eller delade mappar, tillsammans med Handle ID och Process exekverbar namn. Detta verktyg låter dig också koppla bort en eller flera filer som öppnas på distans från en delad mapp.

Aktivera den globala flaggan "Underhåll objektlista" för första gången

Först, för att möjliggöra spårning av lokala filhandtag, måste du aktivera flaggan 'underhåll objektlista' genom att köra följande kommando från admin-kommandotolken.

openfiles /local på

Du kommer att se följande meddelande:

INFO: Systemets globala flagga "underhåll objektlista" är för närvarande aktiverad.

Du behöver bara köra det här kommandot för första gången. Starta sedan om Windows för att ändringen ska träda i kraft.

Visa öppna filer och motsvarande processnamn

Efter omstart av Windows, från en admin kommandotolk fönster, skriv:

öppna filer

Detta listar fil-/handtags-ID, processnamn och listan över filer som öppnats lokalt eller öppnas på distans via lokala delningspunkter, i ett tabellformat.

Använd parametern /query för att visa utdata i list- eller CSV-format.

öppna filer /query /FO LIST. öppna filer /query /FO CSV

För att kopiera utdata till urklipp, skicka utdata till Clip.exe enligt nedan. Klistra sedan in resultatet i Anteckningar eller valfri annan redigerare.

öppna filer |klipp
Hitta vilken process som har låst en fil
öppna filer /query /FO LIST |klipp. öppna filer /query /FO CSV |klipp
Hitta vilken process som har låst en fil

För mer information om hur du kopierar kommandotolkens utdata till urklipp eller sparar utdata till en fil, kolla in artikeln Hur kopierar man kommandotolkens utdatatext till urklipp eller sparar till fil?

För att ta reda på om en viss fil används av ett program (och för att veta vilket program), kan du använda följande kommandorad.

öppna filer | findstr /i 

Exempel:

öppna filer | findstr /i eiffel

Ovanstående kommando listar alla öppna filer som innehåller ordet "eiffel" i filnamnet. I det här exemplet har Word 2016 för närvarande låset över filen "The Eiffel Tower.docx" (ID 4576).

Hitta vilken process som har låst en fil

Och dialogrutan "File In Use" säger mig samma sak.

Hitta vilken process som har låst en fil

Koppla bort filer som öppnats på distans från delad mapp.

För att koppla bort filer som öppnats från delad mapp så att du kan ta bort, byta namn på filen eller ändra innehållet, använd /disconnect parameter för att bryta anslutningar till den filen. Här är kommandoradsalternativen.

ÖPPNA FILER /Koppla bort [/S system [/U användarnamn [/P [lösenord]]]] {[/ID id] [/A nås av] [/O öppet läge]} [/OP öppen fil] Beskrivning: Gör det möjligt för en administratör att koppla bort filer och mappar som har öppnats på distans via en delad mapp. Parameterlista: /S system Anger det fjärrsystem som ska anslutas till. /U [domän\]användare Anger användarkontexten under vilken kommandot ska köras. /P [lösenord] Anger lösenordet för den givna användarkontexten. /ID id Anger att koppla bort öppna filer med fil-ID. Jokertecken "*" kan användas. /A accessedby Anger att koppla bort alla öppna filer med "accessedby"-värdet. Jokertecken "*" kan användas. /O openmode Anger att koppla bort alla öppna filer med "openmode"-värdet. Giltiga värden är Läs, Skriv eller Läs/Skriv. Jokertecken "*" kan användas. /OP openfile Anger att koppla bort alla öppna filanslutningar som skapats av ett specifikt "öppen fil"-namn. Jokertecken "*" kan användas. /? Visar detta hjälpmeddelande. Exempel: OPENFILES /Koppla bort /? OPENFILES /Koppla bort /ID 1 OPENFILES /Koppla bort /Ett användarnamn OPENFILES /Koppla bort /O Läs/Skriv OPENFILES /Koppla bort /OP "c:\My Documents\somedoc.doc" /ID 234 OPENFILES /Koppla bort /S system /U användarnamn /ID 5 OPENFILES /Koppla bort /S system /U användarnamn /P lösenord /ID *

Openfiles.exe gör perfekt jobbet med att lista alla öppna filer tillsammans med processnamnen, men det kan inte tvångsdöda processer. Detta utmärkta (men förbisedda) inbyggda konsolverktyg kan dock komma väl till pass när du snabbt vill hitta ett processnamn som använder en fil, eller för att koppla bort en fil som nås via en delad mapp av en nätverksanvändare - utan att vara beroende av en tredje part lösning.

5. Öppnade FilesView

Öppnade FilesView från Nirsoft visar listan över alla öppnade filer på ditt system. För varje öppnad fil visas ytterligare information: handtagsvärde, läs-/skriv-/raderingsåtkomst, filposition, processen som öppnade filen, och mer... Alternativt kan du också stänga en eller flera öppnade filer, eller stänga processen som öppnade dessa filer.

Hitta vilken process som har låst en fil

Du kan stänga processer för valda filer eller stänga valda filhandtag. Handtagsnumret representeras i hexadecimala värden medan openfiles.exe-konsolverktyget visar det i normalt format. Detta verktyg låter dig också lägga till ett snabbmenyalternativ för att snabbt hitta processen som för närvarande använder en fil, via högerklicksmenyn. Kontextmenyalternativet / kommandoradsstödet, anser jag, är en av de mest användbara funktionerna som erbjuds av OpenedFilesView.


En liten begäran: Om du gillade det här inlägget, vänligen dela detta?

En "liten" andel från dig skulle verkligen hjälpa mycket med den här bloggens tillväxt. Några bra förslag:
  • Fäst det!
  • Dela den till din favoritblogg + Facebook, Reddit
  • Tweet det!
Så tack så mycket för ditt stöd, min läsare. Det tar inte mer än 10 sekunder av din tid. Dela-knapparna finns precis nedanför. :)

Ezoicrapportera denna annons