George-Alain a écrit :
Non, mais c est un probleme connu,y a des centaines de topics la dessus sur le forum : si t arrives pas a supprimer un fichier, il faut defragmenter la partition ou le supprimer en ligne de commande ...
Nota: ca ne marche pas toujours non plus .
|
Ouais... Mais non.
Pour faire simple :
Windows refuse la suppression d'un fichier tant qu'un flux est ouvert vers celui-ci. A la base, c'est un fonctionnement normal : un fichier ouvert par une application en lecture-écriture (ou avec un verrou d'exclusivité) ne peut pas être modifié par une autre application tant que l'application qui a ouvert ce fichier ne le ferme pas (ou libère le verrou).
Si un fichier ne peut pas être supprimé, c'est qu'une application n'a pas libéré ses ressources correctement, peut-être en raison d'un bug ou parce qu'elle a planté, et Windows maintient le verrou.
Ce n'est pas un problème de fragmentation.
Cependant, lors de la défragmentation, Windows passe en revue les flux vers les fichiers qu'il déplace et, si le flux n'est plus valide, il le ferme pour permettre son déplacement. Windows ne défragmente pas les fichiers qui ont un flux exclusif valide en cours. Raison pour laquelle il reste parfois des fichiers non défgramentés.
La conséquence de l'opération est qu'il est possible de le supprimer manuellement ensuite.
On peut aussi forcer la libération des ressources de 2 façons :
- par une fermeture et une ouverture de session, ce qui provoque l'arrêt des applications et / ou services en cours d'exécution sous le compte d'utilisateur concerné;
- par un redémarrage, ce qui déclenche les mêmes mécanismes que ceux ci-dessus mais aussi pour tous les autres comptes (système, réseau, etc) qui ne sont pas affectés par une session normale.
Il y a aussi des utilitaires qui nettoient les flux non valides vers des fichiers.
C'est souvent explorer qui maintient des verrous. A tester :
- ctrl + alt + suppr
- sélectionner explorer.exe
- cliquer sur "Terminer le processus"
- les icônes sur le bureau doivent disparaître, de même que la barre des tâches
- dans le gestionnaire des tâches, aller dans le menu fichier, sélectionner "Exécuter...", taper "cmd"
- se rendre à l'endroit souhaité (avec des "cd" et des tabs pour la complétion automatique) et supprimer le fichier avec la commande "del"
- taper exit
- retourner dans le gestionnaire des tâches, aller dans le menu fichier, sélectionner "Exécuter...", taper "explorer.exe" et cliquer sur "Ok"
Certains ont également essayé un démarrage en mode "Sans échec" pour effectuer la suppression dudit fichier, mais je n'ai pas testé cette méthode.
La réalité technique est un peu plus complexe que çette explication et il y a des nuances sur la manière dont Windows gère certains verrous, en fonction du compte sous lequel ils ont été créés notamment. Des services peuvent aussi demander des verrous, etc.
Message édité par Yttrium le 02-06-2004 à 03:16:25