Question

Est-il possible en .Net pour savoir exactement quel processus a verrouillé un fichier?

EDIT : Je fais cela parce que je veux que mon utilisateur sait qu'ils ne peuvent pas modifier / ouvrir le fichier, car en ce moment, un autre programme qu'ils utilisent (par exemple Excel) a ouvert. Espérons que cela aide.

Était-ce utile?

La solution

La réponse à cette question est non.

Cependant, la longue réponse est qu'il ya plusieurs appels API et les méthodes WMI que vous pouvez utiliser pour trouver cette information, mais ne vous attendez pas à être rapide et simple.

Si vous voulez utiliser les appels API, jetez un oeil à la page fonction de NtQuerySystemInformation avec le paramètre SYSTEM_PROCESS_INFORMATION. C'est l'une de ces belles méthodes « sans-papiers » qui vient avec l'avertissement merveilleux:

  

NtQuerySystemInformation peut être   modifié ou non disponible à l'avenir   les versions de Windows. Applications   devrait utiliser les autres fonctions   répertoriés dans cette rubrique.

Je suggère donc d'éviter que favorable à l'utilisation WMI.

Vous pouvez utiliser le WMI Win32_Process classe à énumérer tous les processus en cours d'exécution sur la machine, puis énumèrent toutes les poignées chaque processus tient jusqu'à ce que vous trouvez le fichier que vous recherchez. Malheureusement, il n'y a pas moyen simple d'aller « hey, ce procédé est de verrouillage ce fichier », il ne fonctionne que dans l'autre sens, vous devez rechercher la liste des processus jusqu'à ce que vous trouviez celui qui bloque le fichier qui vous intéresse.

Je vous recommande un petit article sympa sur CodeProject intitulé Comment: (Presque) tout dans WMI via C # Partie 2: processus . (Partie 1 est aussi une bonne lecture si vous aimez ce genre de chose)

Autres conseils

Eh bien ... ce n'est pas exactement une façon .NET de le faire ... mais en supposant que vous voulez juste trouver à l'aide d'un utilitaire facile, consultez Poignée de SysInternals .

On dirait que quelqu'un a compris celui-ci dehors (et vous pouvez en apprendre un peu le français aussi bien :))

http://www.axcis.com.au/bb /viewtopic.php?p=505

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top