142 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

110voto

Eric J. Points 73338
<p>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' <a href="http://msdn.microsoft.com/en-us/library/windows/desktop/aa373656%28v=vs.85%29.aspx">API de gestionnaire de redémarrage</a>, cette information est maintenant suivie.<p>J’ai mis en place un code qui prend le chemin d’accès d’un fichier et retourne un <code></code> de tous les processus qui sont verrouillage ce fichier.</p><pre><code></code></pre></p>

34voto

orip Points 28225
<p>Un des points positifs de <code></code> est que vous pouvez courir comme un sous-processus et analyser la sortie.<p>Nous le faisons dans notre script de déploiement - fonctionne comme un charme.</p></p>

10voto

user137604 Points 87
<p>J’ai eu des problèmes avec le code ci-dessus. Ci-dessous est une version modifiée qui semble bien fonctionner.<pre><code></code></pre></p>

7voto

Stefan Points 7940
<p>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.<p><strong>C# :</strong></p><pre><code></code></pre><p>VB.Net :</p><pre><code></code></pre></p>

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: