2009-08-10 8 views

Répondre

1

Vous ne pouvez pas le supprimer pendant qu'un autre processus l'utilise. Cela vient du traitement de bas niveau de Windows. Cependant, vous pouvez jouer avec renommer le fichier ou le configurer pour être supprimé au prochain démarrage.

Process Explorer outil peut vous aider à trouver quel processus utilise le fichier et il peut effectivement fermer le handle - donné des droits propres/administratifs. Cela est donc possible avec les appels d'API, mais une telle fermeture forcée du gestionnaire de fichiers peut entraîner un comportement imprévisible de ce processus.

0

Si vous ne pouvez pas le supprimer, vous pourrez peut-être le renommer, mais je ne sais pas pourquoi certains fichiers verrouillés peuvent être renommés alors que d'autres ne le peuvent pas.

Vous pouvez également programmer à supprimer au prochain démarrage en utilisant MoveFileEx avec une destination nulle et le drapeau MOVEFILE_DELAY_UNTIL_REBOOT:
http://msdn.microsoft.com/en-us/library/aa365240(VS.85).aspx
http://www.pinvoke.net/default.aspx/kernel32/MoveFileEx.html
http://www.pinvoke.net/default.aspx/Enums/MoveFileFlags.html

0

Si vous utilisez My.Computer.FileSystem.DeleteFile, vous pouvez informer l'utilisateur du programme verrouillé si un autre programme utilise le fichier. Il ne peut pas être supprimé s'il est utilisé.

Try 
    My.Computer.FileSystem.DeleteFile("C:\Documents and Settings\anybody\Desktop\dummy.doc", _ 
            FileIO.UIOption.AllDialogs, _ 
            FileIO.RecycleOption.DeletePermanently, _ 
            FileIO.UICancelOption.ThrowException) 
Catch ex As System.IO.IOException 
    Console.WriteLine(ex.ToString()) 
End Try 
Questions connexes