Comment puis-je déverrouiller un fichier qui est verrouillé par un processus dans .NET [dupliquer]

StackOverflow https://stackoverflow.com/questions/242882

Question

    

Cette question a déjà une réponse ici:

         

Je souhaite que mon application nettoie tous les fichiers temporaires qu’elle a utilisés. Le problème est que tous les fichiers temporaires ne sont pas sous mon contrôle. Je souhaite simplement "brutalement" Déverrouillez-les pour les supprimer par programme.

Était-ce utile?

La solution

Consultez ceci article. Je pense que vous aurez du mal à le faire en C # de manière native, même en utilisant interop, mais écrire un assembly wrapper C ++ / CLI peut être un bon compromis. Notez également que l'utilisateur doit disposer du privilège SE_DEBUG pour que cela fonctionne.

Autres conseils

J'ai également eu du mal à résoudre ce problème, et je me suis retrouvé face à l'implémentation de la ligne de commande de Unlocker. Dans mon cas, il doit fonctionner plusieurs fois par jour et débloque sans problème des milliers de fichiers par jour.

Si votre application veut nettoyer les fichiers temporaires qu’elle possède, vous avez alors le contrôle total pour déverrouiller ces fichiers et les supprimer!

Si vous souhaitez supprimer tous les fichiers TEMP, qu’ils appartiennent à votre application ou autrement, vous devez être TRÈS prudent. L’application d’origine a probablement appliqué le verrou car elle souhaite utiliser le fichier!

Si vous en avez vraiment besoin, vous pouvez toujours créer une application en ligne de commande plutôt que d'essayer de reproduire les fonctionnalités des outils existants, ce qui sera difficile en C #.

Découvrez ceci fil sur les forums MSDN. Il y a suffisamment d'informations pour faire ce que vous voulez, mais ce n'est pas recommandé.

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