2009-12-16 10 views
1

Considérons un dossier réseau:Vérifiez si le dossier est utilisé en C#

\\desiis\c$\Company\B2b\Monitor

Sur cette machine, tout processus qui tente de supprimer le répertoire Monitor reçoit une erreur parce qu'un utilisateur sur le réseau local a ce répertoire ouvert (probablement avec Windows Explorer). Puis-je détecter, via le framework C# et .NET, si un utilisateur (et quel utilisateur) a un répertoire particulier ouvert/en cours d'utilisation?

Répondre

2

Je ne suis pas sûr si vous pouvez obtenir l'utilisateur particulier dans le répertoire, mais la classe DirectoryInfo dans C# .NET serait probablement le meilleur chemin à parcourir.

http://msdn.microsoft.com/en-us/library/system.io.directoryinfo_members.aspx

examen de l'API sur ce lien et vous remarquerez qu'il ya une méthode pour obtenir les informations sur le moment où le répertoire du dernier accès, mais pas par qui. Vous pouvez également intercepter n'importe quelle exception lorsque vous essayez de supprimer un répertoire car il n'est pas disponible (une exception sera levée car vous en êtes probablement bien conscient).

Notez également que la capture d'exceptions est coûteuse et que vous devez évaluer les ralentissements de votre processus en procédant ainsi.

+0

J'ai besoin de l'API kernel32.dll (toute méthode, qui ??) à ce sujet (pour connaît le utilisateur qui utilise le répertoire) merci! –

2

Non, je ne sais pas.

Il semble que vous deviez attraper l'Exception qui se produit comme solution de contournement.

+0

c'est dommage: '(peut-être, tout gourou de Microsoft aura une solution ... Je prie pour cela ... –

Questions connexes