2009-12-07 21 views
0

J'essaie d'éjecter un lecteur amovible (virtuel), et il échoue car certaines poignées de fichiers sont ouvertes, peut-être des fenêtres d'explorateur. Quel est le meilleur moyen d'obtenir toutes les poignées ouvertes aux fichiers sur ce disque et de les fermer?Comment rechercher et fermer toutes les poignées de fichier ouvertes sur un lecteur amovible (avant d'éjecter)

Est-il également possible (en mode utilisateur) de trouver des processus qui s'exécutent sur ce lecteur, afin que je puisse avertir l'utilisateur avec le nom du processus?

Idéalement, je voudrais le faire dans une application en mode utilisateur plutôt que d'exiger des privilèges d'administrateur. J'utilise VC++ dans Visual Studio 2005, dans une application MFC, mais des échantillons dans n'importe quelle langue seraient les bienvenus!

Répondre

1

L'utilitaire Process Explorer peut rechercher des handles ouverts, mais je ne sais pas s'il peut le faire sans privilèges élevés. De ce que j'ai pu rassembler, il le fait en utilisant l'API "Performance Counters".

Je pense que cet article fait ce que vous avez besoin, énumérer les processus en cours, énumérer les poignées pour chacun, rechercher un descripteur de fichier faisant référence à un chemin sur le lecteur en question:

How to enumerate process' handles?