Comment identifier le processus qui a verrouillé un fichier dans Windows

click fraud protection

Lorsque vous essayez de supprimer un fichier ou un dossier utilisé par un processus, la boîte de dialogue Fichier en cours d'utilisation apparaît et affiche le nom du programme qui a verrouillé le fichier.

Cependant, il existe des cas où la boîte de dialogue "Fichier en cours d'utilisation" n'affiche pas le nom du processus qui a un verrou sur le fichier que vous essayez de supprimer. Dans certains cas, la boîte de dialogue affichera « l'action ne peut pas être terminée car le fichier est ouvert dans un autre processus“.

Trouver quel processus a verrouillé un fichier

Pour enquêter sur les processus et les fichiers verrouillés, Windows Sysinternals Process Explorer est probablement la première option qui vient à l'esprit pour la plupart des utilisateurs. Cependant, il y a deux solutions intégrées pour afficher la liste des fichiers ouverts en cours avec les noms de processus correspondants.

Trouvez quel processus a verrouillé un fichier en utilisant :

  1. Moniteur de ressources (resmon.exe)
  2. Explorateur de processus de Microsoft Sysinternals
  3. Gérer de Microsoft Sysinternals
    • Rechercher un descripteur de fichier via le menu contextuel
  4. Outil de console intégré Openfiles.exe
    • Activer le suivi des descripteurs de fichiers locaux
    • Afficher les fichiers ouverts et les noms de processus correspondants
    • Déconnecter les fichiers ouverts des dossiers partagés
  5. OpenedFilesView de Nirsoft.net (3ème partie)

1. Moniteur de ressources

Resource Monitor (resmon.exe) est un outil intégré doté de nombreuses fonctionnalités utiles. Avec Resource Monitor, vous pouvez suivre l'utilisation actuelle du réseau et d'Internet, afficher les descripteurs associés pour fichiers verrouillés, ainsi que gérer les processus comme vous le feriez avec le gestionnaire de tâches.

Pour trouver le nom du processus qui a un fichier verrouillé, cliquez sur l'onglet CPU, tapez le nom du fichier ou une partie de celui-ci dans la zone de texte Associated Handles.

Trouver quel processus a verrouillé un fichier

Nous avons couvert Resource Monitor plus tôt. Consultez ces articles :

  • Comment utiliser Resource Monitor pour trouver quel processus a verrouillé un fichier ?
  • Quel programme utilise toute votre bande passante Internet? Utilisez Resource Monitor pour le trouver

2. Explorateur de processus

Explorateur de processus n'a pas besoin d'être présenté. Dans Process Explorer, il vous suffit d'utiliser la fonction Rechercher et de saisir le nom du fichier. Cela montre le processus qui accède au fichier.

Trouver quel processus a verrouillé un fichier

Dans la vue du volet inférieur, vous pouvez fermer le descripteur de fichier si nécessaire.

Vous devez exécuter Process Explorer en tant qu'administrateur afin de gérer les processus qui s'exécutent avec élévation de privilèges. Pour élever Process Explorer, cliquez sur le menu Fichier → Afficher les détails de tous les processus.

Consultez ces articles liés à Process Explorer :

  • Comment supprimer un fichier ou un dossier indélébile tenace sous Windows ?
  • Trouvez quel programme utilise votre webcam actuellement
  • Comment trouver quel programme a causé un message d'erreur inconnu ?
  • Que signifie l'échec de l'énumération des objets dans le conteneur ?

3. Gérer à partir de Windows Sysinternals

Gérer est un utilitaire de Microsoft Sysinternals qui affiche des informations sur les descripteurs ouverts pour tout processus du système. Vous pouvez l'utiliser pour voir les programmes qui ont un fichier ouvert, ou pour voir les types d'objets et les noms de tous les descripteurs d'un programme. Handle est comme une version en ligne de commande de Explorateur de processus.

Noter: La poignée v4.21 a un petit bug où il signale toujours « Aucune poignée correspondante trouvée » si la lettre de lecteur est en majuscule. J'espère que Microsoft le corrigera dans la prochaine mise à jour.

D'un Invite de commandes d'administration fenêtre, utilisez la syntaxe de la ligne de commande pour trouver le processus qui ouvre le fichier :

handle.exe -a -u filename_with_path

Si le nom du fichier contient des espaces, placez-le entre guillemets doubles.

Exemple:

handle.exe -a -u "c:\users\ramesh\desktop\Mandate-form.pdf"
trouver quel processus fichier verrouillé - sysinternals gérer

(La mention du nom de fichier sans le chemin ne fonctionnera pas nécessairement dans toutes les situations. Il est conseillé de toujours inclure le chemin complet.)

La sortie affiche le nom du processus, l'identifiant du processus, le nom d'utilisateur, le nom de fichier verrouillé (cible) avec le chemin.

Sysinternals Handle: arguments de ligne de commande

utilisation: gérer [[-a [-l]] [-u] | [-c [-y]] | [-s]] [-p |] [nom] [-nobanner]
-une Videz toutes les informations de poignée.
-l Affichez simplement les poignées de section sauvegardées par fichier d'échange.
-c Ferme le handle spécifié (interprété comme un nombre hexadécimal).
Vous devez spécifier le processus par son PID.AVERTISSEMENT: La fermeture des poignées peut entraîner une instabilité de l'application ou du système.
-y Ne demandez pas de confirmation de fermeture de poignée.
-s Nombre d'impressions de chaque type de poignée ouverte.
-u Afficher le nom d'utilisateur propriétaire lors de la recherche de poignées.
-p Dump handles appartenant au processus (nom partiel accepté).
Nom Rechercher des poignées d'objets avec (fragment accepté).
-pas de bannière Ne pas afficher la bannière de démarrage et le message de copyright.

Aucun argument ne videra toutes les références de fichiers.

Ajouter Sysinternals Handle au menu contextuel

Vous pouvez ajouter Sysinternals Handle au menu contextuel pour les fichiers afin de trouver rapidement le programme qui a verrouillé le fichier. Pour l'ajouter au menu contextuel, procédez comme suit :

  1. Télécharger Gérer du site Microsoft Sysinternals.
  2. Copier les fichiers handle.exe & handle64.exe dans un dossier - par exemple, d:\outils
  3. Copiez les lignes de code suivantes dans le Bloc-notes et enregistrez le fichier sous find_handle.vbs vers un emplacement permanent.
    'Exécute l'utilitaire Sysinternals Handle.exe avec l'argument de nom de fichier. '© Ramesh Srinivasan -- https://winhelponline.com/blog. 'Date de création: 29 mars 2008. 'Date de mise à jour: 11 juin 2019. 'Pour toutes les versions de Windows, y compris Windows 10 Option Explicit. Dim objShell, WshShell, objFSO, sBaseKey, sFilename. Définissez objShell = CreateObject("Shell. Application") Définissez WshShell = CreateObject("WScript. Coquille") Définissez objFSO = CreateObject("Scripting. FileSystemObject") Si WScript. Arguments. Count = 0 Then 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" Sinon si objFSO.FileExists (WScript. Arguments (0)) = True Alors sFilename = lcase (WScript. Arguments (0)) objShell. ShellExecute "cmd.exe", "/k d:\tools\handle.exe -a -u " & _ & sFilename &, "", "runas", 1 End If. Fin si

    Noter: Le chemin Sysinternals Handle.exe est codé en dur comme d:\tools\handle.exe dans le script ci-dessus. Si le programme se trouve sur un chemin différent, modifiez le chemin dans le script en conséquence. Pour Windows 64 bits, vous pouvez utiliser soit handle.exe ou handle64.exe

  4. Double-cliquez find_handle.vbs pour ajouter l'entrée de menu contextuel dans le registre. Vous n'aurez besoin de le faire qu'une seule fois. Mais, si vous déplacez le script dans un autre dossier, vous devrez double-cliquer dessus à nouveau pour mettre à jour le chemin dans le registre.
  5. Vous verrez le Trouver la poignée option lorsque vous faites un clic droit sur un fichier. Cliquer dessus lancera le script qui exécute à son tour handle.exe avec l'argument de nom de fichier pour trouver le processus qui a verrouillé le fichier.trouver quel processus fichier verrouillé - sysinternals gérer

Pour supprimer le Trouver la poignée entrée du menu contextuel, démarrez l'éditeur de registre (regedit.exe) et supprimez la clé suivante :

HKEY_CURRENT_USER\Software\Classes\*\shell\FindHandle

4. OpenFiles.exe — un outil de console intégré

Un autre outil intégré que nous allons utiliser est Openfiles.exe, un outil de console qui n'est pas nouveau pour Windows. Il a été introduit à l'origine en 2000 dans le cadre des outils du Kit de ressources Windows 2000/2003. Cet utilitaire était alors inclus par défaut dans Windows Vista et supérieur (y compris Windows 10). Openfiles affiche la liste des fichiers actuellement ouverts à partir des dossiers locaux ou partagés, ainsi que l'identifiant de la poignée et le nom de l'exécutable du processus. Cet outil permet également de déconnecter un ou plusieurs fichiers ouverts à distance à partir d'un dossier partagé.

Activer le drapeau global « Maintenir la liste des objets » pour la première fois

Tout d'abord, pour activer le suivi des descripteurs de fichiers locaux, vous devez activer l'indicateur « maintenir la liste des objets » en exécutant la commande suivante à partir de l'invite de commande admin.

openfiles /local sur

Vous verrez le message suivant :

INFO: L'indicateur global du système « maintenir la liste des objets » est actuellement activé.

Vous devrez exécuter cette commande pour la première fois seulement. Redémarrez ensuite Windows pour que la modification prenne effet.

Afficher les fichiers ouverts et les noms de processus correspondants

Après le redémarrage de Windows, à partir d'un Invite de commandes d'administration fenêtre, tapez :

Ouvrir des fichiers

Cela répertorie l'ID de fichier/de poignée, le nom du processus et la liste des fichiers ouverts localement ou ouverts à distance via des points de partage locaux, dans un format de tableau.

Pour afficher la sortie aux formats List ou CSV, utilisez le paramètre /query.

openfiles /query /FO LIST. fichiers ouverts /requête /FO CSV

Pour copier la sortie dans le presse-papiers, dirigez la sortie vers Clip.exe comme ci-dessous. Collez ensuite la sortie dans le Bloc-notes ou tout autre éditeur de votre choix.

fichiers ouverts |clip
Trouver quel processus a verrouillé un fichier
openfiles /query /FO LIST |clip. fichiers ouverts /query /FO CSV |clip
Trouver quel processus a verrouillé un fichier

Pour plus d'informations sur la copie de la sortie de l'invite de commande dans le presse-papiers ou l'enregistrement de la sortie dans un fichier, consultez l'article Comment copier le texte de sortie de l'invite de commande dans le presse-papiers ou l'enregistrer dans un fichier ?

Pour savoir si un fichier particulier est utilisé par un programme (et pour savoir quel programme), vous pouvez utiliser la ligne de commande suivante.

fichiers ouverts | findstr /i 

Exemple:

fichiers ouverts | findstr /j'eiffel

La commande ci-dessus répertorie tous les fichiers ouverts qui contiennent le mot « eiffel » dans le nom du fichier. Dans cet exemple, Word 2016 a actuellement le verrou sur le fichier « La Tour Eiffel.docx » (ID 4576).

Trouver quel processus a verrouillé un fichier

Et la boîte de dialogue "Fichier en cours d'utilisation" me dit la même chose.

Trouver quel processus a verrouillé un fichier

Déconnectez les fichiers ouverts à distance du dossier partagé.

Pour déconnecter les fichiers ouverts du dossier partagé afin de pouvoir supprimer, renommer le fichier ou modifier le contenu, utilisez le /disconnect paramètre pour couper les connexions à ce fichier. Voici les options de la ligne de commande.

OPENFILES /Disconnect [/S system [/U username [/P [password]]]] {[/ID id] [/A accessby] [/O openmode]} [/OP openfile] Description: permet à un administrateur de déconnecter des fichiers et des dossiers qui ont été ouverts à distance via un dossier. Liste de paramètres: /S system Spécifie le système distant auquel se connecter. /U [domain\]user Spécifie le contexte utilisateur dans lequel la commande doit s'exécuter. /P [mot de passe] Spécifie le mot de passe pour le contexte utilisateur donné. /ID id Spécifie de déconnecter les fichiers ouverts par ID de fichier. Le caractère générique "*" peut être utilisé. /Aaccessedby Spécifie de déconnecter tous les fichiers ouverts par la valeur "accessedby". Le caractère générique "*" peut être utilisé. /O openmode Spécifie de déconnecter tous les fichiers ouverts par la valeur "openmode". Les valeurs valides sont Read, Write ou Read/Write. Le caractère générique "*" peut être utilisé. /OP openfile Spécifie de déconnecter toutes les connexions de fichiers ouverts créées par un nom de "fichier ouvert" spécifique. Le caractère générique "*" peut être utilisé. /? Affiche ce message d'aide. Exemples: OPENFILES /Déconnecter /? OPENFILES /Déconnecter /ID 1 OPENFILES /Déconnecter /A nom d'utilisateur OPENFILES /Déconnecter /O Lire/écrire OPENFILES /Déconnecter /OP "c:\My Documents\somedoc.doc" /ID 234 OPENFILES /Déconnecter /S système /U nom d'utilisateur /ID 5 OPENFILES /Déconnecter /S système /U nom d'utilisateur /P mot de passe /IDENTIFIANT *

Openfiles.exe fait parfaitement le travail de répertorier tous les fichiers ouverts avec les noms de processus, mais il ne peut pas forcer les processus à tuer. Cependant, cet excellent outil de console intégré (mais négligé) peut s'avérer utile lorsque vous souhaitez trouver rapidement un nom de processus qui utilise un fichier ou pour déconnecter un fichier auquel un utilisateur du réseau accède via un dossier partagé - sans dépendre d'un tiers Solution.

5. VueFichiers Ouverts

VueFichiers Ouverts de Nirsoft affiche la liste de tous les fichiers ouverts sur votre système. Pour chaque fichier ouvert, des informations supplémentaires sont affichées: valeur du handle, accès en lecture/écriture/suppression, position du fichier, le processus qui a ouvert le fichier, et plus… En option, vous pouvez également fermer un ou plusieurs fichiers ouverts, ou fermer le processus qui les a ouverts des dossiers.

Trouver quel processus a verrouillé un fichier

Vous pouvez fermer les processus des fichiers sélectionnés ou fermer les descripteurs de fichiers sélectionnés. Le numéro de poignée est représenté en valeurs hexadécimales alors que l'outil de console openfiles.exe l'affiche dans le format normal. Cet outil vous permet également d'ajouter une option de menu contextuel pour trouver rapidement le processus qui utilise actuellement un fichier, via le menu contextuel. L'option du menu contextuel / la prise en charge de la ligne de commande, je considère, est l'une des fonctionnalités les plus utiles offertes par OpenedFilesView.


Une petite demande: si vous avez aimé ce post, merci de le partager ?

Un "minuscule" partage de votre part aiderait beaucoup à la croissance de ce blog. Quelques bonnes suggestions :
  • Épinglez-le !
  • Partagez-le sur votre blog préféré + Facebook, Reddit
  • Tweetez-le !
Alors merci beaucoup pour votre soutien, mon lecteur. Cela ne prendra pas plus de 10 secondes de votre temps. Les boutons de partage sont juste en dessous. :)

Ézoïquesignaler cette annonce