186 votes

Windows peut-il me dire ce qui utilise ma clé USB ?

En bon citoyen que je suis, je clique avec le bouton gauche de la souris sur l'icône "Retirer le matériel en toute sécurité" dans ma barre de tâches, et je sélectionne mon lecteur USB à démonter.

Puis je reçois le message :

Windows ne peut pas arrêter votre périphérique de volume générique parce qu'il est en cours d'utilisation. Fermez tout programme ou Windows qui pourrait utiliser le périphérique, puis réessayez plus tard.

Bien sûr, comme c'est le système d'exploitation, il connaît exactement les applications qui utilisent mon appareil. Alors pourquoi ne me le dit-elle pas ?

Ou y a-t-il un moyen de le savoir ?

203voto

Gaia Points 6086

Méthode plus simple : Windows (10 au moins, AFAIK) crée une entrée dans le journal des événements lorsque vous essayez d'éjecter un lecteur amovible et que vous ne pouvez pas le faire parce qu'un processus a un verrou sur lui. Les deux ID d'événement 225 indiquent l'ID du processus et le nom du processus responsable du verrouillage.

Pas à pas :

1) Lancez le visualiseur d'événements

2) Ouvrez "Windows Logs" puis "System".

3) Cliquez à droite sur "Système" et choisissez "Filtrer le journal actuel".

4) Dans la boîte de dialogue qui s'affiche, entrez "225" (sans les guillemets) à l'endroit où il est indiqué "All Event IDs".

5) Vous verrez alors tous les événements liés à l'impossibilité d'éjecter le disque parce qu'un processus l'a verrouillé.

6) Regardez l'horodatage de toutes ces entrées et déterminez celles qui correspondent à l'heure réelle à laquelle vous avez essayé d'éjecter le disque.

7) Prendre les mesures appropriées. La plupart du temps, il est possible de mettre fin à une tâche de manière élégante (en fermant le programme qui a le verrou). Arrêter le service de recherche de Windows est également acceptable. L'arrêt d'une analyse antivirus devrait être acceptable (si vous ne pensez pas avoir de virus à ce moment-là). Aller dans le gestionnaire de tâches et tuer le processus peut ne pas être acceptable. La façon de traiter ce problème dépasse le cadre de cette question.

8) (Enregistrer la vue...) dans le panneau Actions (dans le cadre de droite) vous pouvez "Enregistrer le filtre dans la vue personnalisée..." ainsi vous le trouverez dans "Vues personnalisées" (dans le cadre de gauche au-dessus des "Journaux Windows")

ID du processus : Event Viewer Entry

Nom du processus : Event Viewer Entry

8) Si vous n'avez pas d'autre entrée avec un nom de processus le processus Système (processus id 4) retient votre disque. Pour contourner celui-ci, vous devrez aller dans la gestion des disques et mettez le lecteur que vous voulez éjecter hors ligne . Si le fichier se trouve sur votre disque de démarrage, vous ne pouvez pas le mettre hors ligne. Dans ce cas, consultez la note ci-dessous :

MISE À JOUR 2018 : J'ai vu des applications telles que WhatsApp Desktop garde des poignées sur Chrome Canary via le processus système . Comme il n'est pas possible d'éjecter le disque de démarrage (parce qu'il est en cours d'utilisation), la solution consistait à utiliser une autre astuce Sysinternals appelé Poignée . Après avoir fermé le programme qui a le fichier verrouillé, lancez la poignée et exécutez (à titre d'exemple) handle64 "Chrome SxS\Application\chrome.exe" pour voir si les poignées sont toujours présentes sur le fichier qui a le verrou PID 4. Par essai et erreur, fermez chaque programme en cours d'exécution, jusqu'à ce qu'il n'y ait plus de poignées sur le fichier verrouillé.

Meilleure méthode (payante)

Téléchargez et exécutez SafelyRemove . Il vous aide à éjecter le disque et, s'il ne peut pas le faire, il affiche les processus qui le verrouillent :

enter image description here

89voto

jasonlaflair Points 668

Vous pouvez utiliser Sysinternals Process Explorer pour trouver le handle de tous les fichiers qui sont ouverts. Il suffit de sélectionner le Find et sélectionner Find Handle or DLL . Dans la boîte de dialogue qui s'ouvre, saisissez la lettre du lecteur dans le champ de recherche. Les résultats de la recherche devraient montrer tous les fichiers ouverts à partir du lecteur et le processus dans lequel ils sont ouverts.

45voto

Tchonialite Points 281

Vous pouvez également utiliser ligne de commande pour interroger le journal de Windows avec wevtutil.exe (depuis Windows 7) en sachant que la Windows Kernel-PnP utilise l'évènement ID 225 pour consigner le refus du système (ayant toujours l'id de processus 4) de retirer ou d'éjecter le périphérique USB \VID_ ####&PID_############ (où les # désignent des nombres hexadécimaux).

wevtutil qe System /q:"*[System[(EventID=225)]]" /c:5 /f:text /rd:true
  • qe System : demande d'événements à partir du journal du système
  • /q : requête avec XPath
  • EventID=225 signifie que le système a refusé une demande d'éjection
  • /c:5 : nombre d'entrées à récupérer (5 ici)
  • /f:text : format (par défaut, xml)
  • /rd:true : ordre inverse (le plus récent en premier)

Je l'utilise dans un lot script.

22voto

Jason Dale Points 111

Voici un rapide PowerShell commande pour interroger le journal des événements et montrer quelle application bloque l'éjection du disque (fonctionne pour moi avec Windows 10, probablement avec 7/8 aussi)

Get-EventLog -LogName System -after (Get-Date).AddHours(-1) | Where-Object {$_.EventID -eq 225} | Sort-Object TimeGenerated | Format-Table -Wrap

La sortie listera toutes les instances de la dernière heure où le système n'a pas pu éjecter un disque dur. Le site Message La colonne montre le processus qui a bloqué l'éjection. Dans mon exemple ci-dessous, le gestionnaire de tâches était en fait le coupable et j'ai pu m'éjecter après avoir fermé le gestionnaire de tâches.

PS C:\Users\Jonathan> Get-EventLog -LogName System -after (Get-Date).AddHours(-1) | \Where-Object {$_.EventID -eq 225} | Sort-Object TimeGenerated | Format-Table -Wrap

   Index Time          EntryType   Source                 InstanceID Message
   ----- ----          ---------   ------                 ---------- -------
   14692 Sep 07 10:50  Warning     Microsoft-Windows-Ke          225 The application \Device\HarddiskVolume4\Windows\System32\Taskmgr.exe with process id 11972 stopped
                                   rnel-PnP                          the removal or ejection for the device USB\VID_0781&PID_5575\200445301013C111B1A0.
   14693 Sep 07 10:50  Warning     Microsoft-Windows-Ke          225 The application \Device\HarddiskVolume4\Windows\System32\Taskmgr.exe with process id 11972 stopped
                                   rnel-PnP                          the removal or ejection for the device USB\VID_0781&PID_5575\200445301013C111B1A0.

9voto

Felype Points 179

Vous pouvez lancer resmon.exe (par WIN+R), aller dans disque > Activité du disque > Trier par fichier. Vous pouvez maintenant voir tous les fichiers auxquels le système accède et les processus qui y accèdent, classés par le chemin d'accès au fichier (qui commence par une lettre de lecteur). Cela peut ne pas fonctionner dans tous les cas, mais c'est une approche simple.

Le redémarrage de l'ordinateur semble "libérer" l'utilisation du périphérique. Pour une suppression plus rapide, vous pouvez également désactiver la mise en cache de Windows dans la section Matériel de votre appareil. Parfois, Windows prend plus de temps que prévu pour vider le cache sur le disque externe et affiche un message indiquant que l'appareil est utilisé (parce qu'il le sera, par Windows lui-même).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X