Sådan identificeres den proces, der har låst en fil i Windows

How Identify Process That Has Locked File Windows

åbne filer

Når du forsøger at slette en fil eller mappe, der bruges af en proces, vises Dialogboksen Fil i brug vises med navnet på det program, der har låst filen.



Der er dog tilfælde, hvor dialogboksen 'Fil i brug' ikke viser navnet på den proces, der har en lås på den fil, du prøver at slette. I nogle tilfælde viser dialogen “handlingen kan ikke gennemføres, fordi filen er åben i en anden proces '.



Find hvilken proces der har låst en fil



Til undersøgelse af processer og låste filer er Windows Sysinternals Process Explorer sandsynligvis den første mulighed, der kommer til at tænke på for de fleste brugere. Der er dog to indbyggede løsninger for at få vist den aktuelle liste over åbne filer sammen med tilsvarende procesnavne.

Find hvilken proces der har låst en fil ved hjælp af:

  1. Ressourceovervågning (resmon.exe)
  2. Process Explorer fra Microsoft Sysinternals
  3. Håndtering fra Microsoft Sysinternals
  4. Openfiles.exe indbygget konsolværktøj
  5. OpenedFilesView fra Nirsoft.net (3. part)

1. Ressourceovervågning

Resource Monitor (resmon.exe) er et indbygget værktøj, der har mange nyttige funktioner. Med Resource Monitor kan du spore nuværende netværks- og internetbrug , se tilknyttede håndtag til låste filer samt styre processer, ligesom du ville bruge Jobliste.



For at finde det procesnavn, der har en fil låst, skal du klikke på CPU-fanen, skrive filnavnet eller en del af det i tekstfeltet Associerede håndtag.

Find hvilken proces der har låst en fil

Vi har tidligere dækket Resource Monitor. Tjek disse artikler:

2. Process Explorer

Process Explorer behøver ingen introduktion. I Process Explorer er alt, hvad du skal gøre, at bruge søgefunktionen og indtaste filnavnet. Dette viser den proces, der giver adgang til filen.

Find hvilken proces der har låst en fil

Fra den nederste rudevisning 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 Filer → Vis detaljer for alle processer .

Tjek disse Process Explorer-relaterede artikler:

3. Håndtering fra Windows Sysinternals

Håndtere er et hjælpeprogram fra Microsoft Sysinternals, der viser information 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 objekttyperne og navnene på alle programmets håndtag. Håndtag er som en kommandolinieversion af Process Explorer .

Bemærk: Håndtag v4.21 har en lille bug hvor den altid rapporterer 'Ingen matchende håndtag fundet', hvis drevbogstavet er med store bogstaver. Håber, at Microsoft løser det i den næste opdatering.

Fra en admin Kommandoprompt vindue, brug kommandolinjens syntaks til at finde den proces, hvor filen er åben:

handle.exe -a -u filnavn_med_sti

Hvis filnavnet indeholder mellemrum, skal du omslutte det med dobbelt anførselstegn.

Eksempel:

handle.exe -a -u 'c:  users  ramesh  desktop  Mandate-form.pdf'

find hvilken proces låst fil - sysinternals håndtag

(At nævne filnavnet uden stien fungerer muligvis ikke nødvendigvis i enhver situation. Det tilrådes altid at medtage den fulde sti.)

Outputtet viser procesnavnet, procesidentifikatoren, brugernavnet, det låste (mål) filnavn med sti.

Sysinternals Handle: Kommandolinjeargumenter

brug: håndtag [[-a [-l]] [-u] | [-c [-y]] | [-s]] [-p |] [navn] [-nobanner]
-til Dump alle håndteringsoplysninger.
-l Vis bare sektionshåndtag, der har sidefil.
-c Lukker det angivne håndtag (fortolket som et hexadecimalt tal).
Du skal specificere processen ved hjælp af dens PID.ADVARSEL: Lukning af håndtag kan forårsage ustabilitet i applikationen eller systemet.
-og Bed ikke om bekræftelse på tæt håndtag.
-s Udskrivningstall for hver type håndtag, der er åben.
-u Vis det brugernavn, der ejer, når du søger efter håndtag.
-p Dumphåndtag, der hører til processen (delvis navn accepteret).
navn Søg efter håndtag til objekter med (fragment accepteret).
-nobanner Vis ikke startbanneren 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øjreklikmenuen for filer for hurtigt at finde det program, der har låst filen. Følg disse trin for at føje det til genvejsmenuen:

  1. Hent Håndtere fra Microsoft Sysinternals-websted.
  2. Kopier filerne handle.exe & handle64.exe til en mappe - f.eks. d: værktøjer
  3. Kopier følgende kodelinjer til Notesblok, og gem filen som find_handle.vbs til et fast sted.
    'Kører Sysinternals Handle.exe-værktøjet med filnavnargument. '© Ramesh Srinivasan - https://winhelponline.com/blog' Oprettet dato: 29. marts 2008 'Opdateret dato: 11. juni 2019' For alle versioner af Windows, inklusive Windows 10 Option Eksplicit Dim objShell, WshShell, objFSO, sBaseKey, sFilename Sæt objShell = CreateObject ('Shell.Application') Sæt WshShell = CreateObject ('WScript.Shell') Indstil objFSO = CreateObject ('Scripting.FileSystemObject') Hvis WScript.Arguments.Count = 0 Så 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 Hvis objFSO.FileExists (WScript.Arguments (0)) = Sandt derefter sFilename = lcase (WScript.Arguments (0)) objShell.ShellExecute 'cmd.exe', '/kd:	oolshandle.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. Til 64-bit Windows kan du bruge en af ​​dem handle.exe eller handle64.exe

  4. Dobbeltklik find_handle.vbs for at tilføje kontekstmenuposten i registreringsdatabasen. Du skal kun gøre dette en gang. Men hvis du flytter scriptet til en anden mappe, skal du dobbeltklikke på det igen for at opdatere stien i registreringsdatabasen.
  5. Du ser Find håndtag indstilling, når du højreklikker på en fil. Ved at klikke på det startes scriptet, der igen kører handle.exe med filnavnargumentet for at finde den proces, hvor filen er låst.

    find hvilken proces låst fil - sysinternals håndtag

For at fjerne Find håndtag genvejsmenuindgang, start Registreringseditor ( regedit.exe ) og slet følgende nøgle:

HKEY_CURRENT_USER  Software  Classes  *  shell  FindHandle

4. OpenFiles.exe - et indbygget konsolværktøj

Et andet indbygget værktøj, vi skal bruge, er Openfiles.exe, et konsolvæ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 eksekverbart navn på proces. Dette værktøj giver dig også mulighed for at frakoble en eller flere filer, der åbnes eksternt fra en delt mappe.

Aktivér det globale flag 'Vedligehold objektliste' for første gang

For det første, for at aktivere sporing af lokale filhåndtag, skal du aktivere 'vedligehold objekter liste' flag ved at køre følgende kommando fra admin Kommandoprompt.

openfiles / lokal til

Du får vist følgende meddelelse:

INFO: Systemets globale flag 'vedligehold objektliste' er aktuelt aktiveret.

Du skal kun køre denne kommando for første gang. Genstart derefter Windows for at ændringen skal træde i kraft.

Se åbne filer og de tilsvarende procesnavne

Efter genstart af Windows, fra en admin Kommandoprompt vindue, type:

åbne filer

Dette viser File / Handle ID, Process Name 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 / query / FO LIST openfiles / query / FO CSV

For at kopiere output til udklipsholder, rør output til Clip.exe som nedenfor. Indsæt derefter output i Notesblok eller en hvilken som helst anden redaktør efter eget valg.

openfiles | klip

Find hvilken proces der har låst en fil

openfiles / query / FO LIST | clip openfiles / query / FO CSV | clip

Find hvilken proces der har låst en fil

For mere information om kopiering af kommandopromptoutput til udklipsholder eller gemme output i en fil, se artiklen Hvordan kopieres kommandoprompt outputtekst til udklipsholder eller gemmes 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.

åbne filer | findstr / i

Eksempel:

åbne filer | 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 'The Eiffel Tower.docx' (ID 4576).

Find hvilken proces der har låst en fil

Og dialogboksen 'File In Use' fortæller mig det samme.

Find hvilken proces der har låst en fil

Afbryd filer, der åbnes eksternt fra den delte mappe.

For at afbryde filer, der er åbnet fra den delte mappe, så du kan slette, omdøbe filen eller ændre indholdet, skal du bruge /koble fra parameter for at klippe forbindelser til den fil. Her er kommandolinjemulighederne.

OPENFILES / Disconnect [/ S system [/ U username [/ 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 blevet åbnet eksternt via en delt mappe. Parameterliste: / S-system Angiver det eksterne system, der skal oprettes forbindelse til. / U [domæne ] bruger Angiver den brugerkontekst, som kommandoen skal udføres under. / P [adgangskode] Angiver adgangskoden til den givne brugerkontekst. / ID id Angiver at afbryde åbne filer med fil-ID. Jokertegnet '*' kan bruges. / A accessedby Angiver at frakoble alle åbne filer efter 'accessedby' værdi. Jokertegnet '*' kan bruges. / O openmode Specificerer at afbryde alle åbne filer med 'openmode' værdi. Gyldige værdier er læse, skrive eller læse / skrive. Jokertegnet '*' kan bruges. / OP openfile Angiver at afbryde alle åbne filforbindelser oprettet med et specifikt 'åbent filnavn'. Jokertegnet '*' kan bruges. /? Viser denne hjælpemeddelelse. Eksempler: OPENFILES / Disconnect /? OPENFILES / Afbryd / ID 1 OPENFILES / Afbryd / Et brugernavn OPENFILES / Afbryd / O Læs / skriv OPENFILER / Afbryd / OP 'c:  Mine dokumenter  somedoc.doc' / ID 234 OPENFILES / Afbryd / S-system / U brugernavn / ID 5 OPENFILES / Afbryd / S-system / U-brugernavn / P-adgangskode / ID *

Openfiles.exe gør perfekt opgaven med at liste alle åbne filer sammen med procesnavne, men det kan ikke med magt dræbe processer. Dette fremragende (men overset) indbyggede konsolværktøj kan dog være nyttigt, når du hurtigt vil finde et procesnavn, der bruger en fil, eller at afbryde en fil, som en netværksbruger får adgang til via en delt mappe - uden på en tredjepartsløsning.

5. OpenedFilesView

OpenedFilesView fra Nirsoft viser listen over alle åbnede filer på dit system. For hver åbnet fil vises yderligere information: håndteringsværdi, læs / skriv / slet adgang, filposition, processen, der åbnede filen og mere ... Du kan eventuelt også lukke en eller flere åbnede filer eller lukke den proces, der åbnede disse filer.

Find hvilken proces der har låst en fil

Du kan lukke processer for valgte filer eller lukke valgte filhåndtag. Håndtagsnummeret er repræsenteret i hex-værdier, mens openfiles.exe-konsolværktøj viser det i det normale format. Dette værktøj giver dig også mulighed for at tilføje en kontekstmenupunkt for hurtigt at finde den proces, der i øjeblikket bruger en fil via højreklikmenuen. Kontekstmenuindstillingen / kommandolinjestøtten mener jeg er en af ​​de mest nyttige funktioner, der tilbydes af OpenedFilesView.


En lille anmodning: Hvis du kunne lide dette indlæg, så del dette?

En 'lille' andel fra dig ville alvorligt hjælpe meget med væksten i denne blog. Nogle gode forslag:
  • Pin det!
  • Del det til din yndlingsblog + Facebook, Reddit
  • Tweet det!
Så meget tak for din støtte, min læser. Det tager ikke mere end 10 sekunder af din tid. Deleknapperne er lige nedenfor. :)