Når du prøver å slette en fil eller mappe som er i bruk av en prosess, vises dialogboksen Fil i bruk som viser navnet på programmet som har låst filen.
Imidlertid er det tilfeller der "Fil i bruk"-dialogen ikke viser navnet på prosessen som har en lås på filen du prøver å slette. I noen tilfeller vil dialogen vise "handlingen kan ikke fullføres fordi filen er åpen i en annen prosess“.
![Finn hvilken prosess som har låst en fil](/f/c33ebd7b892a1c69cb8cbd1609bafc44.png)
For å undersøke prosesser og låste filer, er Windows Sysinternals Process Explorer sannsynligvis det første alternativet som kommer til tankene for de fleste brukere. Det er imidlertid to innebygde løsninger for å vise listen over åpne filer sammen med tilhørende prosessnavn.
Finn hvilken prosess som har låst en fil ved å bruke:
- Resource Monitor (resmon.exe)
- Process Explorer fra Microsoft Sysinternals
-
Håndtak fra Microsoft Sysinternals
- Finn filhåndtaket via høyreklikkmenyen
-
Openfiles.exe innebygd konsollverktøy
- Aktiver sporing av lokale filhåndtak
- Se åpne filer og de tilsvarende prosessnavnene
- Koble fra filer som er åpnet fra delte mapper
- OpenedFilesView fra Nirsoft.net (tredjepart)
1. Ressursovervåking
Resource Monitor (resmon.exe) er et innebygd verktøy som har mange nyttige funksjoner. Med Resource Monitor kan du spor gjeldende nettverks- og internettbruk, se tilhørende håndtak for låste filer, i tillegg til å administrere prosesser akkurat som du ville bruke Task Manager.
For å finne prosessnavnet som har en fil låst, klikk på CPU-fanen, skriv inn filnavnet eller en del av det i tekstboksen Associated Handles.
Vi har dekket Resource Monitor tidligere. Sjekk ut disse artiklene:
- Hvordan bruke Resource Monitor for å finne hvilken prosess som har låst en fil?
- Hvilket program bruker hele Internett-båndbredden din? Bruk Resource Monitor for å finne den
2. Prosessutforsker
Prosessutforsker trenger ingen introduksjon. I Process Explorer er alt du trenger å gjøre å bruke Finn-funksjonen og skrive inn filnavnet. Dette viser prosessen som får tilgang til filen.
Fra den nedre rutevisningen kan du lukke filhåndtaket om nødvendig.
Du må kjøre Process Explorer som administrator for å administrere prosesser som kjører forhøyet. For å heve Process Explorer, klikk på Fil-menyen → Vis detaljer for alle prosesser.
Sjekk ut disse Process Explorer-relaterte artiklene:
- Hvordan sletter jeg en gjenstridig fil eller mappe som ikke kan slettes i Windows?
- Finn hvilket program som bruker webkameraet ditt for øyeblikket
- Hvordan finne hvilket program som forårsaket en ukjent feilmelding?
- Hva betyr Feiled to Enumerate Objects in the Container?
3. Håndtere fra Windows Sysinternals
Håndtak er et verktøy fra Microsoft Sysinternals som viser informasjon om åpne håndtak for enhver prosess i systemet. Du kan bruke den til å se programmene som har en fil åpen, eller til å se objekttypene og navnene på alle håndtakene til et program. Handle er som en kommandolinjeversjon av Prosessutforsker.
Merk: Håndtak v4.21 har en liten feil der den alltid rapporterer "Ingen samsvarende håndtak funnet" hvis stasjonsbokstaven er med store bokstaver. Håper Microsoft fikser det i neste oppdatering.
Fra en admin ledetekst vindu, bruk kommandolinjesyntaksen for å finne prosessen som har filen åpen:
handle.exe -a -u filnavn_med_bane
Hvis filnavnet inneholder mellomrom, omslutter det i doble anførselstegn.
Eksempel:
handle.exe -a -u "c:\users\ramesh\desktop\Mandate-form.pdf"
(Å nevne filnavnet uten banen fungerer ikke nødvendigvis i alle situasjoner. Det er tilrådelig å inkludere hele banen alltid.)
Utdataene viser prosessnavnet, prosessidentifikatoren, brukernavnet, det låste (målet) filnavnet med banen.
Sysinternals-håndtak: Kommandolinjeargumenter
bruk: håndtak [[-a [-l]] [-u] | [-c [-y]] | [-s]] [-p |] [navn] [-nobanner]
-en | Dump all håndtaksinformasjon. |
-l | Bare vis sidefil-støttede seksjonshåndtak. |
-c | Lukker det angitte håndtaket (tolkes som et heksadesimalt tall). Du må spesifisere prosessen med PID. ADVARSEL: Lukking av håndtak kan forårsake ustabilitet i programmet eller systemet. |
-y | Ikke be om bekreftelse på nært håndtak. |
-s | Skriv ut antallet av hver type håndtak som er åpent. |
-u | Vis eiernavnet når du søker etter håndtak. |
-s | Dumpehåndtak som tilhører prosess (delnavn akseptert). |
Navn | Søk etter håndtak til objekter med |
-nobanner | Ikke vis oppstartsbanneret og opphavsrettsmeldingen. |
Ingen argumenter vil dumpe alle filreferanser.
Legg til Sysinternals Handle til høyreklikkmenyen
Du kan legge til Sysinternals Handle i høyreklikkmenyen for filer for raskt å finne programmet som har låst filen. Følg disse trinnene for å legge den til i kontekstmenyen:
- nedlasting Håndtak fra Microsoft Sysinternals nettsted.
- Kopier filene handle.exe & handle64.exe til en mappe – f.eks.
d:\verktøy
- Kopier følgende kodelinjer til Notisblokk, og lagre filen som
find_handle.vbs
til et permanent sted.'Kjører Sysinternals Handle.exe-verktøyet med filnavnargument. '© Ramesh Srinivasan -- https://winhelponline.com/blog. 'Opprettelsesdato: 29. mars 2008. 'Oppdatert dato: 11. juni 2019. 'For alle versjoner av Windows, inkludert Windows 10 Option Explicit. Dim objShell, WshShell, objFSO, sBaseKey, sFilename. Sett objShell = CreateObject("Shell. Applikasjon") Sett WshShell = CreateObject("WScript. Shell") Sett objFSO = CreateObject("Skript. FileSystemObject") Hvis WScript. Argumenter. Count = 0 Deretter 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" Else If objFSO.FileExists (WScript. Argumenter (0)) = True Deretter sFilename = lcase (WScript. Argumenter (0)) objShell. ShellExecute "cmd.exe", "/k d:\tools\handle.exe -a -u" & _ & sFilename &, "", "runas", 1 End If. Slutt om
Merk: Sysinternals Handle.exe-banen er hardkodet som
d:\tools\handle.exe
i skriptet ovenfor. Hvis programmet er plassert på en annen bane, endre banen i skriptet tilsvarende. For 64-biters Windows kan du bruke begge handle.exe eller handle64.exe - Dobbeltklikk
find_handle.vbs
for å legge til kontekstmenyoppføringen i registeret. Du trenger bare å gjøre dette én gang. Men hvis du flytter skriptet til en annen mappe, må du dobbeltklikke på det igjen for å oppdatere banen i registret. - Du vil se Finn håndtak alternativet når du høyreklikker på en fil. Ved å klikke på det vil skriptet starte som igjen kjører handle.exe med filnavnargumentet for å finne prosessen som har filen låst.
For å fjerne Finn håndtak hurtigmenyoppføring, start Registerredigering (regedit.exe
) og slett følgende nøkkel:
HKEY_CURRENT_USER\Software\Classes\*\shell\FindHandle
4. OpenFiles.exe - et innebygd konsollverktøy
Et annet innebygd verktøy vi skal bruke er Openfiles.exe, et konsollverktøy som ikke er nytt for Windows. Den ble opprinnelig introdusert i 2000 som en del av Windows Resource Kit 2000/2003-verktøyene. Dette verktøyet ble da inkludert som standard i Windows Vista og høyere (inkludert Windows 10). Openfiles viser listen over åpne filer fra lokale eller delte mapper, sammen med håndtaks-ID og prosess kjørbar navn. Dette verktøyet lar deg også koble fra én eller flere filer som er eksternt åpnet fra en delt mappe.
Aktiver "Vedlikehold objektliste" globalt flagg for første gang
Først, for å aktivere sporing av lokale filhåndtak, må du slå på "vedlikehold objektliste"-flagget ved å kjøre følgende kommando fra admin ledetekst.
openfiles /local på
Du vil se følgende melding:
INFO: Systemets globale flagg 'vedlikeholde objektliste' er for øyeblikket aktivert.
Du trenger bare å kjøre denne kommandoen for første gang. Start deretter Windows på nytt for at endringen skal tre i kraft.
Se åpne filer og de tilsvarende prosessnavnene
Etter omstart av Windows, fra en admin ledetekst vindu, skriv inn:
åpne filer
Dette viser fil-/håndtaks-ID, prosessnavn og listen over filer som er åpnet lokalt eller åpnet eksternt via lokale delingspunkter, i et tabellformat.
For å se utdataene i liste- eller CSV-formater, bruk parameteren /query.
åpne filer /query /FO LIST. åpne filer /query /FO CSV
For å kopiere utdataene til utklippstavlen, rør utdataene til Clip.exe som nedenfor. Deretter limer du inn utdataene i Notisblokk eller et annet redigeringsprogram du ønsker.
åpne filer |klipp
åpne filer /query /FO LIST |klipp. åpne filer /query /FO CSV |klipp
For mer informasjon om å kopiere kommandoprompt-utdata til utklippstavlen eller lagre utdataene til en fil, sjekk ut artikkelen Hvordan kopiere kommandoprompt utdatatekst til utklippstavlen eller lagre til fil?
For å finne ut om en bestemt fil er i bruk av et program (og for å vite hvilket program), kan du bruke følgende kommandolinje.
åpne filer | finnstr /i
Eksempel:
åpne filer | findstr /i eiffel
Kommandoen ovenfor viser alle åpne filer som inneholder ordet "eiffel" i filnavnet. I dette eksemplet har Word 2016 for øyeblikket låsen over filen «The Eiffel Tower.docx» (ID 4576).
Og dialogboksen "Fil i bruk" forteller meg det samme.
Koble fra filer som er åpnet eksternt fra delt mappe.
For å koble fra filer som er åpnet fra delt mappe, slik at du kan slette, gi nytt navn til filen eller endre innholdet, bruk /disconnect
parameter for å kutte tilkoblinger til den filen. Her er kommandolinjealternativene.
ÅPNE FILER /Koble fra [/S system [/U brukernavn [/P [passord]]]] {[/ID id] [/A åpnet av] [/O åpen modus]} [/OP åpen fil] Beskrivelse: Gjør det mulig for en administrator å koble fra filer og mapper som har blitt eksternt åpnet gjennom en delt mappe. Parameterliste: /S system Spesifiserer det eksterne systemet som skal kobles til. /U [domene\]bruker Angir brukerkonteksten som kommandoen skal utføres under. /P [passord] Spesifiserer passordet for den gitte brukerkonteksten. /ID id Angir å koble fra åpne filer etter fil-ID. Jokertegnet "*" kan brukes. /A accessedby Angir å koble fra alle åpne filer med "accessedby"-verdi. Jokertegnet "*" kan brukes. /O openmode Angir å koble fra alle åpne filer med "openmode"-verdi. Gyldige verdier er Les, Skriv eller Les/skriv. Jokertegnet "*" kan brukes. /OP openfile Spesifiserer å koble fra alle åpne filtilkoblinger opprettet av et spesifikt "åpen fil"-navn. Jokertegnet "*" kan brukes. /? Viser denne hjelpemeldingen. Eksempler: OPENFILES /Koble fra /? OPENFILES /Koble fra /ID 1 OPENFILES /Koble fra /Et brukernavn OPENFILES /Koble fra /O Les/skriv OPENFILES /Koble fra /OP "c:\My Documents\somedoc.doc" /ID 234 OPENFILES /Koble fra /S system /U brukernavn /ID 5 OPENFILES /Koble fra /S system /U brukernavn /P passord /ID *
Openfiles.exe gjør perfekt jobben med å liste alle åpne filer sammen med prosessnavnene, men det kan ikke tvangsdrepe prosesser. Imidlertid kan dette utmerkede (men oversett) innebygde konsollverktøyet komme godt med når du raskt vil finne et prosessnavn som bruker en fil, eller for å koble fra en fil som blir åpnet via en delt mappe av en nettverksbruker – uten å være avhengig av en tredjepart løsning.
5. Åpnet FileView
Åpnet FileView fra Nirsoft viser listen over alle åpnede filer på systemet ditt. For hver åpnet fil vises tilleggsinformasjon: håndteringsverdi, lese-/skrive-/slettetilgang, filposisjon, prosessen som åpnet filen, og mer... Eventuelt kan du også lukke en eller flere åpne filer, eller lukke prosessen som åpnet disse filer.
Du kan lukke prosesser for valgte filer eller lukke valgte filhåndtak. Håndtaksnummeret er representert i hex-verdier, mens openfiles.exe-konsollverktøyet viser det i normalt format. Dette verktøyet lar deg også legge til et kontekstmenyalternativ for raskt å finne prosessen som bruker en fil, via høyreklikkmenyen. Kontekstmenyalternativet / kommandolinjestøtten, anser jeg, er en av de mest nyttige funksjonene som tilbys av OpenedFilesView.
En liten forespørsel: Hvis du likte dette innlegget, kan du dele dette?
En "liten" andel fra deg ville virkelig hjelpe mye med veksten av denne bloggen. Noen gode forslag:- Fest den!
- Del den på favorittbloggen din + Facebook, Reddit
- Tweet det!
![Ezoisk](/f/e21ab1194daa0428d27d48cfeefe4507.png)