Question Comment trouvez-vous quel processus tient un fichier ouvert dans Windows?


Une chose qui m'agace sans fin à propos de Windows est l'ancien violation de partage Erreur. Souvent, vous ne pouvez pas identifier ce qui le maintient ouvert. Généralement, il ne s'agit que d'un éditeur ou d'un explorateur pointant simplement sur un répertoire pertinent, mais j'ai parfois dû redémarrer ma machine.

Des suggestions sur la façon de trouver le coupable?


478
2018-05-01 00:47


origine


Vous penseriez qu'après tout ce temps, les gars de Windows nous donneraient un moyen de le faire facilement depuis Explorer. Je me demande pourquoi cela n'est pas arrivé? - Cawflands
Je trouve que Explorer est très souvent le processus qui pose problème et qui s’applique à un fichier sans aucune raison évidente. - Eddie
Je sais que cela ne vous aide pas beaucoup, mais je me souviens bien qu'il s'agissait d'une fonctionnalité planifiée de la prochaine version de Windows après Vista et 2008 Server. ou peut-être que c'est une chose WinFS. je ne sais pas où j'ai lu ça ... - Kip


Réponses:


J'ai eu du succès avec Sysinternals  Explorateur de processus. Avec cela, vous pouvez rechercher quels processus ont un fichier ouvert, et vous pouvez l'utiliser pour fermer le (s) descripteur (s) si vous le souhaitez. Bien sûr, il est plus sûr de fermer tout le processus. Faites preuve de prudence et de jugement.

Pour rechercher un fichier spécifique, utilisez l'option de menu Find->Find Handle or DLL...  Tapez une partie du chemin d'accès au fichier. La liste des processus apparaîtra ci-dessous.

Si vous préférez la ligne de commande, la suite Sysinternals inclut un outil de ligne de commande. Manipuler, qui répertorie les poignées ouvertes. Quelques exemples d'utilisation:

  • c:\Program Files\SysinternalsSuite>handle.exe |findstr /i e:\ - trouver tous les fichiers ouverts à partir du lecteur E:
  • c:\Program Files\SysinternalsSuite>handle.exe |findstr /i file-or-path-in-question

417
2018-05-01 01:03



Vous pouvez fermer la poignée, mais gardez à l'esprit que vous retirez le tapis d'une application, les résultats seront au mieux imprévisibles. - WaldenL
@Walden: Absolument. YMMV. Avec WinXP, plusieurs fois, Explorer a ouvert une poignée sans raison évidente et refuse de la fermer. Lorsque cela se produit sur un fichier que vous devez supprimer, vous avez le choix de forcer la fermeture de la poignée ou de redémarrer. Jusqu'à présent, après avoir fait cela des dizaines de fois, je n'ai subi aucun effet néfaste. Comme avec tout outil avancé, utilisez-le avec prudence et discernement. - Eddie
La fermeture des descripteurs peut amener l'application à réutiliser le descripteur sur un autre fichier, ce qui entraînera une corruption - voir la réponse de Jeff ci-dessous: serverfault.com/a/15695/79266 ... beaucoup plus sûr de tuer l'application en maintenant le fichier ouvert, si vous ne voulez pas redémarrer. - RichVel
Pour explorer, btw, maintenez la touche ctrl-shift enfoncée et cliquez avec le bouton droit de la souris sur une zone vide du menu Démarrer, et vous obtiendrez "Exit Explorer" - ps, pas tout à fait la réponse de Jeff .. - Mark Sowul
Cela n'aide pas pour les fichiers non exécutifs, par exemple. un fichier texte. J'ai besoin de savoir qui écrit dans un fichier journal. Une idée? - Xaqron


Pour Windows 7, Windows 8 et Windows 10, vous pouvez utiliser le logiciel intégré. Moniteur de ressources pour ça.

  1. Ouvrir Moniteur de ressources, qui peut être trouvé
    • En recherchant resmon.exe dans le menu de démarrage, ou
    • Comme un bouton sur le Performance onglet dans votre Gestionnaire des tâches
  2. Cochez la case en regard de la Image se dirigeant sur le Les processus section (Les processus cochés afficheront leurs descripteurs de fichier ci-dessous.)
  3. Utilisez le champ de recherche dans le Poignées associées section sur le CPU languette
    • Pointé par la flèche bleue dans la capture d'écran ci-dessous

Au cas où ce ne serait pas évident, lorsque vous aurez trouvé le descripteur, vous pouvez identifier le processus en consultant la colonne Image et / ou PID.

Vous pouvez ensuite fermer l'application si vous êtes capable de le faire ou simplement cliquer avec le bouton droit de la souris sur la ligne et vous aurez l'option de tuer le processus immédiatement. Peasy facile!

Resource Monitor screenshot

Copié de ma réponse originale: https://superuser.com/a/643312/62


147
2017-09-10 11:48



Il est intéressant de noter qu'il peut être difficile de trouver ce programme sous Windows 8 - une recherche de 'resmon.exe' devrait le localiser. - Kylotan
@ Kylotan, arrêtez de perdre votre temps à chercher. Il suffit de courir resmon  directement depuis cmd - Pacerier
@ Pacerier: Nice. Je ne suis pas habitué aux choses se trouvant dans le chemin Windows. - Kylotan
Cela me convient mieux que 'Handle | FindStr 'et' Unlocker ', bien qu'ils soient également efficaces - Marcus Vinicius Pompeu
Toujours valable dans Windows 10 et pouvant être trouvé à l'aide du bouton "Ouvrir le moniteur de ressources" de l'onglet Gestionnaire de tâches -> Performances. - Norman Breau


Essaie le Ouvrir des fichiers commander.


81
2018-05-01 01:18



+1 pour une commande intégrée, bien que j'utilise personnellement ProcessExplorer pour cela la plupart du temps. - RBerteig
Très utile. - marko
ERREUR: le système cible doit exécuter un système d'exploitation 32 bits. - Bozojoe
ne fonctionne pas pour 64 OS! - Jarrod Roberson
Cela semble fonctionner pour Windows 2012R2 64 bits, mais vous devez activer le service "suivi local ouvert" en exécutant openfiles /local on et redémarrer. Cela rend cette fonctionnalité peu utile. - Guss


Soyez juste très prudent avec les poignées de fermeture; c'est encore plus dangereux que vous ne le pensez, à cause du recyclage des poignées - si vous fermez le fichier, et que le programme ouvre autre chose, le fichier original que vous avez fermé peut être réutilisé pour ce "autre chose". Et maintenant, devinez ce qui se passera si le programme continue, pensant qu'il fonctionne sur le fichier (dont vous avez fermé le pseudo), alors qu'en fait ce descripteur de fichier pointe maintenant vers autre chose.

voir Le poste de Raymond Chen sur ce sujet

Supposons qu’un service d’index de recherche ait un fichier ouvert pour l’indexation mais   bloqué temporairement et que vous voulez supprimer le fichier, de sorte que vous   (imprudemment) forcer la poignée fermée. Le service d'index de recherche ouvre son   fichier journal afin d’enregistrer certaines informations et le descripteur de la   Le fichier supprimé est recyclé en tant que descripteur dans le fichier journal. Le coincé   l’opération se termine enfin et le service d’index de recherche obtient enfin   autour de fermer cette poignée il avait ouvert, mais il finit par involontairement   fermer le descripteur du fichier journal.

Le service d'index de recherche ouvre une autre   fichier, disons un fichier de configuration pour l'écriture afin qu'il puisse mettre à jour certains   état persistant. Le descripteur du fichier journal est recyclé en tant que   gérer le fichier de configuration. Le service d'index de recherche veut   enregistrer certaines informations, il écrit donc dans son fichier journal. Malheureusement, le   Le descripteur de fichier journal a été fermé et le descripteur a été réutilisé pour sa configuration.   fichier. Les informations enregistrées vont dans le fichier de configuration,   le corrompre.

Pendant ce temps, une autre poignée que vous avez forcée à fermer a été réutilisée   en tant que pseudonyme mutex, utilisé pour empêcher la transmission de données.   corrompu. Lorsque le descripteur de fichier d'origine est fermé, le descripteur de mutex   est fermé et les protections contre la corruption des données sont perdues. le   plus le service est exécuté, plus ses index sont corrompus.   Finalement, quelqu'un remarque que l'index renvoie des résultats incorrects.   Et lorsque vous essayez de redémarrer le service, il échoue car son   les fichiers de configuration ont été corrompus.

Vous signalez le problème au   société qui rend le service d'index de recherche et ils déterminent que   l'index a été corrompu, le fichier journal s'est mystérieusement arrêté   la journalisation et le fichier de configuration a été écrasé. Certains   technicien pauvre est chargé de la tâche sans espoir de comprendre pourquoi le   service corrompt ses index et fichiers de configuration, ignorant que le   la source de la corruption est que vous avez forcé un handle fermé.


76
2018-05-30 17:04



avertissement important, cela devrait aller plus près du sommet - un redémarrage est probablement préférable à un fichier corrompu en silence. - RichVel
+1 Cela va certainement me faire réfléchir à deux fois avant de forcer les poignées fermées! Il me semble étrange que Windows réutilise immédiatement le numéro d'un handle fermé, au lieu de continuer à l'incrémenter et à ne l'enrouler qu'en cas de besoin. Cela réduirait au moins considérablement les chances que ce problème se produise. - EM0
@RichVel Mettre fin au processus du coupable est probablement préférable à un redémarrage complet. - Dmitry Grigoryev
@DmitryGrigoryev - bon point, et en fait j'ai déjà mentionné que ici - RichVel
Ceci est un avertissement très important, mais ne répond pas à la question Comment trouvez-vous quel processus tient un fichier ouvert dans Windows? - Ploni


J'ai utilisé Manipuler avec succès pour trouver de tels processus dans le passé.


27
2018-05-01 00:52



J'utilise cet outil tout le temps. Si je ne parviens pas à éjecter un lecteur USB, il suffit de taper "handle H:" (ou quelle que soit la lettre du lecteur). Mieux encore, vous pouvez l'utiliser pour forcer les poignées fermées. - Chris Thompson


Qui me verrouille fonctionne bien et garde les gens amusés avec le nom!


7
2018-05-06 00:43



Ne fonctionne pas sous Windows 8 et 10 64 bits. - rustyx


Pour clarifier, cela est probablement dû au fait que les applications tierces se comportent mal en n'utilisant pas le logiciel. CreateFile Appel API correctement que ce soit quoi que ce soit dans Windows lui-même. C'est peut-être une conséquence de la conception de CreateFile, mais cela est fait et nous ne pouvons pas revenir en arrière.

En gros, lorsque vous ouvrez un fichier dans un programme Windows, vous avez la possibilité de spécifier un indicateur permettant un accès partagé. Si vous ne spécifiez pas l'indicateur, le programme prend un accès exclusif au fichier.

Maintenant, si Explorer semble être le coupable, il se peut que ce ne soit que superficiel et que le véritable coupable consiste à installer une extension shell qui ouvre tous les fichiers d’un dossier à ses propres fins, mais aussi gung-ho en le faisant, ou cela ne nettoie pas correctement après lui-même. Symantec AV est quelque chose que j'ai déjà vu faire cela auparavant, et je ne serais pas surpris que d'autres programmes AV soient également à blâmer. Les plug-ins de contrôle de source peuvent également être en cause.

Donc, pas vraiment une réponse, mais juste quelques conseils pour ne pas toujours reprocher à Windows ce qui pourrait être un programme tiers mal écrit (quelque chose qui peut également se produire sur tout autre système d’exploitation ayant un verrouillage de fichier implicite, mais tout système d’exploitation basé sur Unix a un accès partagé par défaut).


7
2017-10-12 14:27



Je ne blâmerai pas une application tierce du fait que mon explorateur Windows verrouille toujours les fichiers Thumbs.db dans son répertoire de travail, mais ne le déverrouille pas toujours lorsque je change de répertoire de travail. Au moins, ils sont déverrouillés quand je ferme la fenêtre, je n'ai pas à tuer TOUS les explorateurs ... - Alexander
@Darth, êtes-vous un acheteur de Microsoft? - Pacerier