Når du forsøger at slette en fil eller mappe, der bruges af en proces, vises dialogboksen File In Use, der viser navnet på det program, der har låst filen.
Der er dog tilfælde, hvor dialogboksen “File In Use” ikke viser navnet på processen, der har en lås på den fil, du prøver at slette. I nogle tilfælde viser dialogen “handlingen kan ikke udføres, fordi filen er åben i en anden proces ”.
For at undersøge processer og låste filer er Windows Sysinternals Process Explorer sandsynligvis den første mulighed, der kommer til at tænke for de fleste brugere. Der er dog to indbyggede løsninger til at vise den aktuelle liste over åbne filer sammen med tilhørende procesnavne.
Find hvilken proces der har låst en fil ved hjælp af:
- Resource Monitor (resmon.exe)
- Process Explorer fra Microsoft Sysinternals
- Håndtag fra Microsoft Sysinternals
- Find filhåndtering via højreklik-menuen
- Openfiles.exe indbygget konsoleværktøj
- Aktivér sporing af lokale filhåndtag
- Se åbne filer og de tilhørende procesnavne
- Frakobl filer, der er åbnet fra delte mapper
- OpenedFilesView fra Nirsoft.net (3. part)
1. Ressource Monitor
Resource Monitor (resmon.exe) er et indbygget værktøj, der har mange nyttige funktioner. Med Resource Monitor kan du spore aktuelle netværks- og internetforbrug, se tilknyttede håndtag til låste filer samt styre processer, ligesom du ville bruge Task Manager.
For at finde det procesnavn, der har en fil låst, skal du klikke på fanen CPU, skrive filnavnet eller en del af det i tekstboksen Associated Handles.
Vi har dækket Resource Monitor tidligere. Tjek disse artikler:
- Hvordan bruges ressource monitor til at finde ud af, hvilken proces der har låst en fil?
- Hvilket program bruger al din internetbåndbredde? Brug Resource Monitor til at finde det
2. Process Explorer
Process Explorer behøver ingen introduktion. I Process Explorer er alt, hvad du skal gøre, at bruge funktionen Find og skriv filnavnet. Dette viser processen, der får adgang til filen.
Fra den nedre rudeevisning kan du om nødvendigt lukke filhåndtaget.
Du skal køre Process Explorer som administrator for at administrere processer, der kører forhøjede. For at hæve Process Explorer skal du klikke på menuen File → Show Details for All Processes .
Se disse relaterede artikler til Process Explorer:
- Sådan slettes en stædig ikke-slettelig fil eller mappe i Windows?
- Find hvilket program, der bruger din webcam i øjeblikket
- Hvordan finder man hvilket program der forårsager en ukendt fejlmeddelelse?
- Hvad betyder undladelse af at opregne objekter i containeren?
3. Håndtering fra Windows Sysinternals
Håndtag er et værktøj fra Microsoft Sysinternals, der viser oplysninger om åbne håndtag til enhver proces i systemet. Du kan bruge den til at se de programmer, der har en fil åben, eller til at se objekttyper og navne på alle programmets håndtag. Håndtag er som en kommandolinjeversion af Process Explorer.
Bemærk: Håndtag v4.21 har en lille fejl, hvor det altid rapporterer “Ingen matchende håndtag fundet”, hvis drevet er med store bogstaver. Håber Microsoft løser det i den næste opdatering.
Fra et admin-kommandopromptvindue skal du bruge kommandolinjens syntaks til at finde den proces, der har filen åben:
handle.exe -a -u filnavn_med_sti
Hvis filnavnet indeholder mellemrum, skal du lukke det inden for dobbeltcitater.
Eksempel:
handle.exe -a -u "c: \ brugere \ ramesh \ desktop \ Mandate-form.pdf"
(At nævne filnavnet uden stien fungerer muligvis ikke nødvendigvis i enhver situation. Det tilrådes altid at medtage den fulde sti.)
Outputet viser procesnavnet, procesidentifikatoren, brugernavnet, det låste (mål) filnavn med sti.
Sysinternals Handle: Kommandolinjeargumenter
brug: håndtere [[-a [-l]] [-u] | [-c [-y]] | [-s]] [-p |] [navn] [-nobanner]
-en | Dump alle håndteringsoplysninger. |
-l | Bare vis sektionshåndtag med sidefiler. |
-c | Lukker det specificerede håndtag (fortolket som et hexadecimalt tal). Du skal specificere processen ved dens PID. ADVARSEL: Lukkehåndtag kan forårsage applikation eller systemstabilitet. |
-y | Anmod ikke om bekræftelse af et tæt håndtag. |
-s | Udskrivningstal for hver type håndtag åben. |
-u | Vis det ejer brugernavn, når du søger efter håndtag. |
-p | Dump-håndtag, der hører til processen (delvis navn accepteret). |
navn | Søg efter håndtag til objekter med (fragment accepteret). |
-nobanner | Vis ikke startbanneret og meddelelsen om ophavsret. |
Ingen argumenter vil dumpe alle filreferencer.
Tilføj Sysinternals Handle til højreklik på menuen
Du kan tilføje Sysinternals Handle til højreklik-menuen for filer for hurtigt at finde det program, der har låst filen. Følg disse trin for at føje den til genvejsmenuen:
- Download håndtag fra Microsoft Sysinternals-websted.
- Kopier filerne handle.exe & handle64.exe til en mappe - f.eks.
d:\tools
- Kopier de følgende kodelinjer til Notepad, og gem filen som
find_handle.vbs
til et permanent sted.'Kører Sysinternals Handle.exe-værktøjet med filnavnsargumentet. '© Ramesh Srinivasan - https://winhelponline.com/blog' Oprettet dato: 29. mar 2008 'Opdateret dato: 11. juni, 2019' For alle versioner af Windows, inklusive Windows 10 Option Eksplicit Dim objShell, WshShell, objFSO, sBaseKey, sFilename Set objShell = CreateObject ("Shell.Application") Indstil WshShell = CreateObject ("WScript.Shell") Sæt objFSO = CreateObject ("Scripting.FileSystemObject") Hvis WScript.Arguments.Count = 0 Derefter 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" Ellers Hvis objFSO.FileExists (WScript.Arguments (0)) = Sandt derefter sFilename = lcase (WScript.Arguments (0)) objShell.ShellExecute "cmd.exe", "/kd:\tools\handle.exe -a -u" & _ "" "" & sFilename & "" ", " ", " runas ", 1 End If End If
Bemærk: Stien Sysinternals Handle.exe er hårdkodet som
d:\tools\handle.exe
i ovenstående script. Hvis programmet er placeret på en anden sti, skal du ændre stien i scriptet i overensstemmelse hermed. I 64-bit Windows kan du enten handle.exe eller handle64.exe - Dobbeltklik på
find_handle.vbs
at tilføje kontekstmenuindgangen i registreringsdatabasen. Du skal kun gøre dette én gang. Men hvis du flytter scriptet til en anden mappe, skal du dobbeltklikke på det igen for at opdatere stien i registreringsdatabasen. - Du kan se indstillingen Find håndtag, når du højreklikker på en fil. Klik på det vil starte scriptet, der igen kører handle.exe med filnavnsargumentet for at finde den proces, der har filen låst.
For at fjerne indtastningen i kontekstmenuen Find håndtag skal du starte Registreringseditor ( regedit.exe
) og slette følgende nøgle:
HKEY_CURRENT_USER \ Software \ Classes \ * \ shell \ FindHandle
4. OpenFiles.exe - et indbygget konsoleværktøj
Et andet indbygget værktøj, vi skal bruge, er Openfiles.exe, et konsoleværktøj, der ikke er nyt for Windows. Det blev oprindeligt introduceret i 2000 som en del af Windows Resource Kit 2000/2003-værktøjerne. Dette værktøj blev derefter inkluderet som standard i Windows Vista og nyere (inklusive Windows 10). Openfiles viser listen over aktuelt åbne filer fra lokale eller delte mapper sammen med håndterings-ID og Process-eksekverbar navn. Dette værktøj giver dig også mulighed for at frakoble en eller flere filer, der åbnes eksternt fra en delt mappe.
Aktivér "Bevar objekter-liste" global flag for første gang
For det første for at aktivere sporing af lokale filhåndtag, skal du aktivere "vedligeholdelsesobjekter liste" flag ved at køre følgende kommando fra admin Kommandoprompt.
openfiles / lokalt på
Du får vist følgende meddelelse:
INFO: Systemets globale flag 'opretholde objekter-liste' er i øjeblikket aktiveret.
Du skal kun køre denne kommando for første gang. Genstart derefter Windows, så ændringen træder i kraft.
Se åbne filer og de tilhørende procesnavne
Når du har genstartet Windows, skal du indtaste:
openfiles
Dette viser fil / håndterings-id, procesnavn og listen over filer, der åbnes lokalt eller åbnes eksternt via lokale delepunkter, i et tabelformat.
Brug parameteren / forespørgsel for at se output i Liste- eller CSV-formater.
openfiles / forespørgsel / FO LIST openfiles / forespørgsel / FO CSV
Hvis du vil kopiere output til udklipsholder, skal du rør output til Clip.exe som nedenfor. Indsæt derefter output i Notepad eller en hvilken som helst anden editor efter eget valg.
openfiles | klip
openfiles / forespørgsel / FO LIST | klip openfiles / forespørgsel / FO CSV | klip
For mere information om kopiering af kommandopromputput til klippebord eller gemme output i en fil, se artiklen Sådan kopieres kommandopromptoutput-tekst til udklipsholder eller Gem i fil?
For at finde ud af, om en bestemt fil bruges af et program (og for at vide, hvilket program), kan du bruge følgende kommandolinje.
openfiles | findstr / i
Eksempel:
openfiles | findstr / i eiffel
Ovenstående kommando viser alle åbne filer, der indeholder ordet "eiffel" i filnavnet. I dette eksempel har Word 2016 i øjeblikket låsen over filen “Eiffeltårnet.docx” (ID 4576).
Og dialogboksen "File In Use" fortæller mig den samme ting.
Frakobl filer, der er åbnet eksternt fra den delte mappe.
Hvis du vil afbryde forbindelser, der er åbnet fra den delte mappe, så du kan slette, omdøbe filen eller ændre indholdet, skal du bruge parameteren /disconnect
at skære forbindelser til den fil. Her er kommandolinjemulighederne.
OPENFILES / Frakobl [/ S-system [/ U-brugernavn [/ P [password]]]] {[/ ID-id] [/ A accessedby] [/ O openmode]} [/ OP openfile] Beskrivelse: Gør det muligt for en administrator at frakoble filer og mapper, der er åbnet eksternt gennem en delt mappe. Parameterliste: / S-system Specificerer det fjernsystem, der skal oprettes forbindelse til. / U [domæne \] bruger Angiver den brugerkontekst, under hvilken kommandoen skal udføres. / P [password] Specificerer adgangskoden til den givne brugersammenhæng. / ID-id Specificerer for at frakoble åbne filer efter fil-ID. Jokertegnet "*" kan bruges. / A accessedby Specificerer for at frakoble alle åbne filer med "accessedby" -værdi. Jokertegnet "*" kan bruges. / O openmode Specificerer for at frakoble alle åbne filer med "openmode" -værdi. Gyldige værdier er læse, skrive eller læse / skrive. Jokertegnet "*" kan bruges. / OP openfile Specificerer for at frakoble alle åbne filforbindelser oprettet med et specifikt "åben fil" navn. Jokertegnet "*" kan bruges. /? Viser denne hjælpemeddelelse. Eksempler: OPENFILES / Disconnect /? OPENFILES / Disconnect / ID 1 OPENFILES / Disconnect / A brugernavn OPENFILES / Disconnect / O Læs / Skriv OPENFILES / Disconnect / OP "c: \ My Documents \ somedoc.doc" / ID 234 OPENFILES / Disconnect / S system / U username / ID 5 OPENFILES / Disconnect / S system / U brugernavn / P adgangskode / ID *
Openfiles.exe udfører perfekt jobbet med at liste alle åbne filer sammen med procesnavne, men det kan ikke med magt dræbe processer. Imidlertid kan dette fremragende (men overset) indbyggede konsoleværktøj komme godt med, når du hurtigt vil finde et procesnavn, der bruger en fil, eller til at afbryde en fil, der får adgang til via en delt mappe af en netværksbruger - uden at afhænge på en tredjepartsløsning.
5. OpenedFilesView
OpenedFilesView fra Nirsoft viser listen over alle åbne filer på dit system. For hver åbnet fil vises yderligere oplysninger: håndter værdi, læse / skrive / slette adgang, filplacering, processen, der åbnede filen, og mere… Eventuelt kan du også lukke en eller flere åbne filer eller lukke processen, åbnede disse filer.
Du kan lukke processer med valgte filer eller lukke valgte filhåndtag. Håndtagetallet er repræsenteret i hex-værdier, mens openfiles.exe-konsoleværktøjet viser det i det normale format. Dette værktøj giver dig også mulighed for at tilføje en kontekstmenuindstilling for hurtigt at finde den proces, der i øjeblikket bruger en fil, via højreklikmenuen. Kontekstmenuindstillingen / kommandolinjestøtte, jeg overvejer, er en af de mest nyttige funktioner, der tilbydes af OpenedFilesView.