Wanneer u probeert een bestand of map te verwijderen die in gebruik is door een proces, verschijnt het dialoogvenster Bestand in gebruik met de naam van het programma dat het bestand heeft vergrendeld.
Er zijn echter gevallen waarin het dialoogvenster "Bestand in gebruik" niet de naam toont van het proces dat een vergrendeling heeft op het bestand dat u probeert te verwijderen. In sommige gevallen toont het dialoogvenster "de actie kan niet worden voltooid omdat het bestand is geopend in" een ander proces“.
Voor het onderzoeken van processen en vergrendelde bestanden is Windows Sysinternals Process Explorer waarschijnlijk de eerste optie die bij de meeste gebruikers opkomt. Er zijn er echter twee ingebouwde oplossingen om de huidige lijst met geopende bestanden samen met de bijbehorende procesnamen weer te geven.
Zoek welk proces een bestand heeft vergrendeld met:
- Bronmonitor (resmon.exe)
- Process Explorer van Microsoft Sysinternals
-
Handvat van Microsoft Sysinternals
- Vind bestandshandle via het rechtsklikmenu
-
Ingebouwde consoletool van Openfiles.exe
- Tracering van lokale bestandshandles inschakelen
- Bekijk geopende bestanden en de bijbehorende procesnamen
- Koppel bestanden los die zijn geopend vanuit gedeelde mappen
- OpenedFilesView van Nirsoft.net (3e partij)
1. Bronmonitor
Resource Monitor (resmon.exe) is een ingebouwde tool met veel handige functies. Met Resource Monitor kunt u: huidige netwerk- en internetgebruik volgen, bekijk de bijbehorende handvatten voor vergrendelde bestanden, evenals het beheren van processen net zoals u zou doen met Taakbeheer.
Om de procesnaam te vinden waarvoor een bestand is vergrendeld, klikt u op het tabblad CPU, typt u de bestandsnaam of een deel ervan in het tekstvak Geassocieerde handvatten.
We hebben Resource Monitor eerder behandeld. Bekijk deze artikelen:
- Hoe Resource Monitor gebruiken om te achterhalen welk proces een bestand heeft vergrendeld?
- Welk programma gebruikt al uw internetbandbreedte? Gebruik Resource Monitor om het te vinden
2. Procesverkenner
Procesverkenner behoeft geen introductie. In Process Explorer hoeft u alleen maar de functie Zoeken te gebruiken en de bestandsnaam in te voeren. Dit toont het proces dat toegang heeft tot het bestand.
Vanuit het onderste deelvenster kunt u indien nodig de bestandshandle sluiten.
U moet Process Explorer als beheerder uitvoeren om processen te beheren die verhoogd worden uitgevoerd. Om Process Explorer te verhogen, klikt u op het menu Bestand → Details voor alle processen weergeven.
Bekijk deze Process Explorer-gerelateerde artikelen:
- Hoe een hardnekkig onverwijderbaar bestand of map in Windows te verwijderen?
- Zoek welk programma uw webcam momenteel gebruikt
- Hoe te vinden welk programma een onbekende foutmelding heeft veroorzaakt?
- Wat betekent Kan objecten in de container niet opsommen?
3. Behandelen vanuit Windows Sysinternals
Handvat is een hulpprogramma van Microsoft Sysinternals dat informatie weergeeft over open grepen voor elk proces in het systeem. U kunt het gebruiken om de programma's te zien die een bestand hebben geopend, of om de objecttypen en namen van alle handvatten van een programma te zien. Handvat is als een opdrachtregelversie van Procesverkenner.
Opmerking: Handvat v4.21 heeft een klein foutje waar het altijd "Geen overeenkomende handvatten gevonden" meldt als de stationsletter in hoofdletters is. Hoop dat Microsoft het in de volgende update oplost.
Van een admin Opdrachtprompt venster, gebruik dan de opdrachtregelsyntaxis om het proces te vinden waarbij het bestand is geopend:
handle.exe -a -u bestandsnaam_met_pad
Als de bestandsnaam spaties bevat, plaatst u deze tussen dubbele aanhalingstekens.
Voorbeeld:
handle.exe -a -u "c:\users\ramesh\desktop\Mandate-form.pdf"
(Het noemen van de bestandsnaam zonder het pad werkt mogelijk niet in elke situatie. Het is raadzaam om altijd het volledige pad op te nemen.)
De uitvoer toont de procesnaam, de proces-ID, gebruikersnaam, de vergrendelde (doel) bestandsnaam met pad.
Sysinternals-handle: opdrachtregelargumenten
gebruik: handvat [[-a [-l]] [-u] | [-c [-y]] | [-s]] [-p |] [naam] [-nobanner]
-een | Dump alle handvatinformatie. |
-l | Toon gewoon door paginabestanden ondersteunde sectiehandvatten. |
-C | Sluit de opgegeven handle (geïnterpreteerd als een hexadecimaal getal). U moet het proces specificeren met zijn PID.WAARSCHUWING: Handvatten sluiten kan instabiliteit van de toepassing of het systeem veroorzaken. |
-y | Vraag niet om bevestiging van het sluiten van de handgreep. |
-s | Aantal afdrukken van elk type geopend handvat. |
-u | Toon de eigenaar van de gebruikersnaam bij het zoeken naar handvatten. |
-P | Dumphandles die bij het proces horen (gedeeltelijke naam geaccepteerd). |
naam | Zoeken naar handvatten naar objecten met |
-nobanner | Geef de opstartbanner en het copyrightbericht niet weer. |
Geen enkel argument zal alle bestandsverwijzingen dumpen.
Sysinternals-handle toevoegen aan rechtsklikmenu
U kunt Sysinternals Handle toevoegen aan het rechtsklikmenu voor bestanden om snel het programma te vinden dat het bestand heeft vergrendeld. Volg deze stappen om het toe te voegen aan het contextmenu:
- Downloaden Handvat van de Microsoft Sysinternals-site.
- Kopieer de bestanden handle.exe & handle64.exe naar een map - bijv.
d:\tools
- Kopieer de volgende regels code naar Kladblok en sla het bestand op als
find_handle.vbs
naar een vaste locatie.'Voert het hulpprogramma Sysinternals Handle.exe uit met bestandsnaamargument. © Ramesh Srinivasan -- https://winhelponline.com/blog. Aanmaakdatum: 29 maart 2008. 'Bijgewerkte datum: 11 juni 2019. 'Voor alle versies van Windows, inclusief Windows 10 Option Explicit. Dim objShell, WshShell, objFSO, sBaseKey, sFilename. Stel objShell = CreateObject("Shell. Sollicitatie") Stel WshShell = CreateObject("WScript. Schelp") Stel objFSO = CreateObject("Scripting. BestandssysteemObject") Als WScript. Argumenten. Count = 0 Dan 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" Anders Als objFSO.FileExists (WScript. Argumenten (0)) = True Dan sFilename = lcase (WScript. Argumenten (0) objShell. ShellExecute "cmd.exe", "/k d:\tools\handle.exe -a -u " & _ & sFilename &, "", "runas", 1 End If. Stop als
Opmerking: Het pad Sysinternals Handle.exe is hard gecodeerd als:
d:\tools\handle.exe
in het bovenstaande script. Als het programma zich op een ander pad bevindt, past u het pad in het script dienovereenkomstig aan. Voor 64-bits Windows kunt u ofwel: handle.exe of handle64.exe - Dubbelklik
find_handle.vbs
om het contextmenu-item in het register toe te voegen. U hoeft dit maar één keer te doen. Maar als u het script naar een andere map verplaatst, moet u er nogmaals op dubbelklikken om het pad in het register bij te werken. - Je ziet de Vind handvat optie wanneer u met de rechtermuisknop op een bestand klikt. Als u erop klikt, wordt het script gestart dat op zijn beurt handle.exe uitvoert met het bestandsnaamargument om het proces te vinden waarin het bestand is vergrendeld.
Om de. te verwijderen Vind handvat contextmenu-item, start u de Register-editor (regedit.exe
) en verwijder de volgende sleutel:
HKEY_CURRENT_USER\Software\Classes\*\shell\FindHandle
4. OpenFiles.exe — een ingebouwde consoletool
Een andere ingebouwde tool die we gaan gebruiken, is Openfiles.exe, een consoletool die niet nieuw is voor Windows. Het werd oorspronkelijk geïntroduceerd in 2000 als onderdeel van de Windows Resource Kit 2000/2003-tools. Dit hulpprogramma was toen standaard inbegrepen in Windows Vista en hoger (inclusief Windows 10). Openfiles geeft de lijst met momenteel geopende bestanden weer van lokale of gedeelde mappen, samen met de handle-ID en de naam van het uitvoerbare bestand. Met deze tool kunt u ook een of meer bestanden loskoppelen die op afstand worden geopend vanuit een gedeelde map.
Schakel de algemene vlag "Lijst met objecten onderhouden" voor de eerste keer in
Ten eerste, om het volgen van lokale bestandshandvatten in te schakelen, moet u de vlag 'lijst met objecten onderhouden' inschakelen door de volgende opdracht uit te voeren vanaf de admin-opdrachtprompt.
openfiles /lokaal op
U ziet het volgende bericht:
INFO: De globale systeemvlag 'lijst met objecten onderhouden' is momenteel ingeschakeld.
U hoeft deze opdracht alleen voor de eerste keer uit te voeren. Start Windows vervolgens opnieuw om de wijziging door te voeren.
Bekijk geopende bestanden en de bijbehorende procesnamen
Na het herstarten van Windows, vanaf een admin Opdrachtprompt venster, typ:
open bestanden
Dit bevat de bestands-/handle-ID, procesnaam en de lijst met bestanden die lokaal zijn geopend of op afstand zijn geopend via lokale deelpunten, in een tabelindeling.
Gebruik de parameter /query om de uitvoer in Lijst- of CSV-indeling te bekijken.
openfiles /query /FO LIST. openfiles /query /FO CSV
Om de uitvoer naar het klembord te kopiëren, pijpt u de uitvoer naar Clip.exe zoals hieronder. Plak de uitvoer vervolgens in Kladblok of een andere editor naar keuze.
openfiles |clip
openfiles /query /FO LIST |clip. openfiles /query /FO CSV |clip
Raadpleeg het artikel voor meer informatie over het kopiëren van de uitvoer van de opdrachtprompt naar het klembord of het opslaan van de uitvoer naar een bestand Hoe de uitvoertekst van de opdrachtprompt naar het klembord te kopiëren of naar een bestand op te slaan?
Om te achterhalen of een bepaald bestand door een programma wordt gebruikt (en om te weten welk programma), kunt u de volgende opdrachtregel gebruiken.
openbestanden | findstr /i
Voorbeeld:
openbestanden | findstr /i eiffel
De bovenstaande opdracht geeft een overzicht van alle geopende bestanden die het woord "eiffel" in de bestandsnaam bevatten. In dit voorbeeld heeft Word 2016 momenteel de vergrendeling over het bestand "The Eiffel Tower.docx" (ID 4576).
En het dialoogvenster "Bestand in gebruik" vertelt me hetzelfde.
Koppel bestanden los die op afstand zijn geopend vanuit de gedeelde map.
Om bestanden die zijn geopend vanuit de gedeelde map los te koppelen, zodat u het bestand kunt verwijderen, hernoemen of de inhoud kunt wijzigen, gebruikt u de /disconnect
parameter om verbindingen met dat bestand te verbreken. Dit zijn de opdrachtregelopties.
OPENFILES /Verbinding verbreken [/S systeem [/U gebruikersnaam [/P [wachtwoord]]]] {[/ID id] [/A benaderd door] [/O openmode]} [/OP openfile] Beschrijving: Hiermee kan een beheerder bestanden en mappen loskoppelen die op afstand zijn geopend via een gedeelde map. Parameterlijst: /S-systeem Specificeert het externe systeem waarmee verbinding moet worden gemaakt. /U [domein\]gebruiker Specificeert de gebruikerscontext waaronder de opdracht moet worden uitgevoerd. /P [wachtwoord] Specificeert het wachtwoord voor de gegeven gebruikerscontext. /ID id Geeft aan dat geopende bestanden moeten worden losgekoppeld op bestands-ID. Het jokerteken "*" mag worden gebruikt. /A accessedby Geeft aan dat alle geopende bestanden moeten worden losgekoppeld met de waarde "accessedby". Het jokerteken "*" mag worden gebruikt. /O openmode Geeft aan dat alle geopende bestanden moeten worden losgekoppeld met de waarde "openmode". Geldige waarden zijn Lezen, Schrijven of Lezen/Schrijven. Het jokerteken "*" mag worden gebruikt. /OP openfile Geeft aan dat alle open bestandsverbindingen die door een specifieke "open bestandsnaam" zijn gemaakt, moeten worden verbroken. Het jokerteken "*" mag worden gebruikt. /? Geeft dit helpbericht weer. Voorbeelden: OPENFILES /Disconnect /? OPENFILES /Disconnect /ID 1 OPENFILES /Disconnect /A gebruikersnaam OPENFILES /Disconnect /O Lezen/schrijven OPENFILES /Disconnect /OP "c:\My Documents\somedoc.doc" /ID 234 OPENFILES /Disconnect /S system /U gebruikersnaam /ID 5 OPENFILES /Disconnect /S system /U gebruikersnaam /P wachtwoord /ID KAART *
Openfiles.exe doet perfect het werk om alle geopende bestanden samen met de procesnamen op te sommen, maar het kan processen niet met geweld doden. Deze uitstekende (maar over het hoofd gezien) ingebouwde consoletool kan echter van pas komen als u snel een procesnaam wilt vinden die wordt gebruikt een bestand, of om een bestand te ontkoppelen dat wordt geopend via een gedeelde map door een netwerkgebruiker - zonder afhankelijk te zijn van een derde partij oplossing.
5. Geopende BestandenBekijken
Geopende BestandenBekijken van Nirsoft geeft de lijst met alle geopende bestanden op uw systeem weer. Voor elk geopend bestand wordt aanvullende informatie weergegeven: handle-waarde, lees-/schrijf-/verwijdertoegang, bestandspositie, het proces dat het bestand heeft geopend, en meer... Optioneel kunt u ook een of meer geopende bestanden sluiten, of het proces sluiten waarmee deze zijn geopend bestanden.
U kunt processen van geselecteerde bestanden sluiten of geselecteerde bestandshandles sluiten. Het handle-nummer wordt weergegeven in hexadecimale waarden, terwijl de consoletool openfiles.exe het in het normale formaat laat zien. Met deze tool kunt u ook een contextmenu-optie toevoegen om snel het proces te vinden dat momenteel een bestand gebruikt, via het rechtsklikmenu. De contextmenu-optie / opdrachtregelondersteuning is naar mijn mening een van de handigste functies die door OpenedFilesView worden aangeboden.
Een klein verzoek: als je dit bericht leuk vond, deel dit dan?
Een "klein" aandeel van jou zou serieus enorm helpen bij de groei van deze blog. Enkele geweldige suggesties:- Speld het!
- Deel het op je favoriete blog + Facebook, Reddit
- Tweet het!