163 votes

Comment puis-je savoir lequel processus se verrouille un fichier à l’aide de .NET ?

J'ai vu plusieurs de réponses sur l'utilisation de la Poignée ou le Moniteur de Processus, mais je voudrais être en mesure de trouver dans mon propre code (C#) le processus qui est le verrouillage d'un fichier.

J'ai une désagréable sensation que je vais avoir à spelunk autour de l'API win32, mais si quelqu'un l'a déjà fait et peut me mettre sur la bonne voie, je vous remercie de l'aide.

Mise à jour

Liens à des questions similaires

145voto

Eric J. Points 73338

Il y a longtemps, il était impossible de fiable, obtenir la liste des processus, un fichier de verrouillage, car Windows simplement ne portait pas sur cette information. Pour prendre en charge l' API de gestionnaire de redémarrage, cette information est maintenant suivie.

J’ai mis en place un code qui prend le chemin d’accès d’un fichier et retourne un `` de tous les processus qui sont verrouillage ce fichier.

38voto

orip Points 28225

Un des points positifs de `` est que vous pouvez courir comme un sous-processus et analyser la sortie.

Nous le faisons dans notre script de déploiement - fonctionne comme un charme.

10voto

user137604 Points 87

J’ai eu des problèmes avec le code ci-dessus. Ci-dessous est une version modifiée qui semble bien fonctionner.

7voto

Stefan Points 7940

Cela fonctionne pour les dll verrouillées par d’autres procédés. Cette routine ne va pas trouver par exemple qu’un fichier texte est verrouillé par un wordprocess.

C# :

VB.Net :

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X