begin process at 2010 02 10 11:59:16
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Trucs & Astuces

 > FAITES GAFFE À DIR()

FAITES GAFFE À DIR()


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Trucs & Astuces Classé sous :bug, dir, problème, suppression, dossier Niveau :Débutant Date de création :20/07/2005 Date de mise à jour :21/03/2007 09:07:39 Vu / téléchargé :10 286 / 218

Auteur : rt15

Ecrire un message privé
Commentaire sur cette source (33)
Ajouter un commentaire et/ou une note

 Description

Cliquez pour voir la capture en taille normale
Je ne sais pas si on peut appeler ça un bug.

En tout cas ça m'a posé énormément de problèmes, et j'ai mis pas mal de temps a comprendre ce qui foirait.

Dir(), une commande ultra connue, ultra utilisée, m'a fait tourner en bourrique un certain temps.

Symptôme: un répertoire ne peut pas être supprimé, alors qu'il est parfaitement vide!!!!!!

Que ce soit avec RmDir() ou en manuel avec Windows, le répertoire reste là...

A ce que j'ai constaté, sous certaines conditions très classiques, Dir() créé un lien avec le répertoire qu'il examine.

Ce lien ne se rompt qu'avec la réutilisation de Dir() !!!!!!!!!

Ou si l'on ferme l'application bien sûre.

On peut faire le parallèle avec les fichiers, qui sont insupprimable si on ne les referment pas avec close.

Bravo Microsoft.

Tient, je vous donne un petit défis, si vous n'avez rien à faire:

Pour faire cette manip correctement, il faut afficher les extensions de fichier. (Outils, Option des dossiers, onglet affichage, décocher Masquer les extensions de fichier dont le type est connu)

Dans l'explorateur Windows, faîtes:
click droit
nouveaux
document texte
modifiez le nom du fichier en 'allo.exe'.
Maintenant, essayez de supprimer ce fichier !!!!!!

Je n'ai essayer cette manip que sous XP [version 5.1.2600], pas mis à jour depuis 2001.

Donnez vos solutions !!!!

Bon courage, et bon flippe.



 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

30 novembre 2005 13:08:00 :
mots clés
21 mars 2007 09:07:39 :
Correction de fautes de syntaxe.

 Sources du même auteur

Source avec Zip Source avec une capture APPLICATION CONSOLE
Source avec Zip Source avec une capture TRAITEMENT DES MESSAGES WINDOWS SOUS VB6
Source avec Zip Source avec une capture TIMER, SLEEP, CHRONOMÉTRAGE, VITESSE DU PROCESSEUR, A LA MIC...
Source avec Zip Source avec une capture ECRAN DE VEILLE AQUARIUM.
Source avec Zip Source avec une capture MOTEUR 2D: JEU INVADERS

 Sources de la même categorie

AFFICHAGE SOUS EXCEL DE LA LISTE DES ' DES GROUPES par djebbipgm
AFFECTATION D'UNE ICÔNE À UN DOSSIER DANS L'EXPLORATEUR par djebbipgm
Source avec Zip CREATION DE GADGET EN VB6 par djebbipgm
Source avec Zip Source avec une capture CAPTEUR DE HANDLE, DE TITRE, DE CLASS, DE POSITION DE TAILLE... par Sechaud
Source avec Zip Source avec une capture COULEUR DANS UN RICHTEXTBOX SANS MODIFIER SELSTART OU SELLEN... par Renfield

 Sources en rapport avec celle ci

AFFECTATION D'UNE ICÔNE À UN DOSSIER DANS L'EXPLORATEUR par djebbipgm
CRÉATION DE SOUS-RÉPERTOIRE À PARTIR DU MENU CONTEXTUEL par djebbipgm
SUPPRESSION DES DOUBLONS DANS PLAGE EXCEL par ucfoutu
Source avec Zip Source avec une capture UTILITAIRE WAV, MID ET MP3 par SnkVrt
ENFIN LA SUPPRESSION D'UNE ARBORESCENCE SANS API NI FILESYST... par PLACARSE

Commentaires et avis

Commentaire de Urgo le 20/07/2005 17:27:40

Ton OS doit avoir un problème, ton défi je l'ai réalisé en 2 tours 3 mouvements... sous XP SP2.

Commentaire de jack le 20/07/2005 17:38:44 administrateur CS

Salut
Je n'ai pas personnellement essayé, mais ce genre de problème vient souvent des anti-virus : Quand l'AV rencontre un nouveau fichuer, il l'analyse, donc il l'ouvre. Pendant ce temps, le fichier n'est pas supprimable.
Alors si le fichier est assez gros, l'AV mettra du temps à libérer le fichier.

Commentaire de EBArtSoft le 20/07/2005 21:16:54 administrateur CS

Tu as un anti-virus ?
Si oui la reponse est la !
Sinon lorsque qu'un repertoire est bloqué
essaie de killé le processus explorer.exe
(parfois quand on dezippe un repertoire en dragdroppant il se bloque)
Bref il y aura toujours un probleme le systeme parfait n'existe pas surtout avec tout les prog qu'on instale/desinstale

@+

Commentaire de BruNews le 20/07/2005 23:59:33 administrateur CS

Tout comme Urgo, j'ai fait fi de ton défi. Faudrait sérieux analyser ton système.
Pour ce qui est des APIs fichier, je te rassure elles vont très bien, je les emploie quasi depuis qu'elles sont nées. Il n'y a que leur mauvais emploi qui pose problème, c'est comme tout le reste.

Commentaire de KaViDee le 21/07/2005 01:39:00

---------------------------
Erreur lors de la suppression du fichier ou du dossier
---------------------------
Impossible de supprimer allo : Cette ressource est utilisée par une autre personne ou un autre programme.

Fermez les programmes susceptibles d'utiliser le fichier et essayez à nouveau.
---------------------------
OK  
---------------------------

C'est balo...

Commentaire de Frecky le 21/07/2005 03:31:24

Windows XP pro SP1 all updated:

Afficher les extension connu
Nouveau fichier .txt + Enter
Click droit, renomer, allo.exe + enter
click + delete, ...


Erreur lors de la suppression du fichier ou du dossier
---------------------------
Impossible de supprimer allo : Cette ressource est utilisée par une autre personne ou un autre programme.

Fermez les programmes susceptibles d'utiliser le fichier et essayez à nouveau.


J'ai aucun anti-virus, et rien suceptible de l'ouvrir. je n'ai pas ouvert l'executable ni le fichier texte, venez me dire pourquoi maintenant

Commentaire de crenaud76 le 21/07/2005 10:09:50

Pas de souci non plus pour moi avec XP SP1, même avec Norton Antivirus, Avaast, Kapersky ou AVG activé ...

Christophe R.

Commentaire de bouv le 21/07/2005 10:14:55

Effectivement j'ai le même problème que Frecky. Vraiment bizard...
Même en désactivant l'antivirus je ne peux le supprimer.
J'ai killé explorer.exe et quelques autres proccessus susceptibles d'accéder au fichier et rien n'y fait.
Perso je suis sous XP SP2.
???
Je vais essayer de fermer la session et je vous tiens au courant...

Commentaire de Mindiell le 21/07/2005 10:20:31

c'est parce que le fichier est vide : 0 octets.
edite le avec le bloc notes et rajoute des choses dedans, puis supprime le ;o)

Commentaire de bouv le 21/07/2005 10:26:48

Meme un redemarrage du PC n'y fait rien chez moi.

Je dois booter sur un cd ms-dos pour pouvoir supprimer le fichier.

Mindiell>> J'ai essayer de mettre qq chose dans le fichier avant de le renommer en allo.exe et le problème est toujours là...

...

Commentaire de bouv le 21/07/2005 10:27:57

Au fait perso j'ai Symantec Antivirus Corporate Edition v10

Commentaire de Inekman le 21/07/2005 13:49:38

Ce genre de problème m'arrive aussi parfois et je pense que c'est bien explorer.exe qui coince. Quand il voit un exe, il tente d'extraire l'icône qui lui est associé. Or comme c'est un exe bidon, il doit sûrement caler pendant l'extraction de cette icône. C'est une hypothèse comme une autre :)

Mais moi perso, je ne sors pas de la voiture quand elle roule...

Commentaire de KaViDee le 21/07/2005 14:06:52

Mindiell -> meme avec 4 octets, ça persiste...

Commentaire de MrdJack le 22/07/2005 04:43:45

Le probleme viens du fait que l'explorer de xp empeche tout simplement la suppression d'un fichier portant le nom d'un de ses processus system. qu'il soit executé ou non.....
essayez donc avec smss.exe ou encore csrss.exe et vous verez bien....
allo.exe me direz vous n'est pas un fichier system de windows xp, mais avec tout le bordel qu'ils y ont mis, ca m'etone pas que ca plante à un endroit ou un autre....

la seule facon de le supprimer, est d'utiliser un autre OS comme sité precedament.....
la commande dos de xp n'etant pas vraiment une commande dos et est basée sur l'explorer, faut s'en passer...., une disquette de démarrage fait tres bien l'affaire....

Commentaire de rayjul le 22/07/2005 07:04:06

J'ai exactement le même problème avec le fichier index.dat de temporary intenet files. Avez-vous essayez de le supprimer?

Commentaire de Frecky le 22/07/2005 22:39:03

Bon, pour les fichiers insuprimable, C'est seulement Microsoft qui bug ( comme toujours), alors fait ctrl+alt+del, Fermer le processur Explorer.exe. Ensuite, FIchier, nouvelle tache. taper cmd et ensuite enter

Par la suite render vous dans le dossier ou se trouve le fichier a suprimer a l'aide de la commande CD puis

del fichier.exe

ensuite taper simplement explorer et tout rentre dans l'ordre!

Bon, c'est la que l'on voit que c'est le programe explorer qui bloque tout, mais pourquoi bloque t'il allo.exe? je n'en sais rien

Commentaire de Mindiell le 23/07/2005 00:43:50

ben on peut aussi simplement renommer le fichier .exe en .txt hein quand même plutot que de tout arreter les processus ;o)

Commentaire de Inekman le 23/07/2005 01:45:30

"mais pourquoi bloque t'il allo.exe? je n'en sais rien"

--> Surement pour la raison que j'ai cité.

Commentaire de KaViDee le 23/07/2005 02:46:46

Mindiell -> Dans la mesure ou il y a marqué "Cette ressource est utilisée par une autre personne ou un autre programme.", on ne peut ni le supprimer, ni le renommer, ni le déplacer.

Commentaire de Mindiell le 23/07/2005 09:14:01

KaViDee-> Dans la mesure ou il plantait ma machine et que je l'ai renommé, je réfléchis avant de poster. Si vous, vous ne pouvez pas,j'en suis désolé ;o)

Commentaire de rt15 le 23/07/2005 10:53:55 administrateur CS

Hey boys, et mon source dans tout ça ?

Sacré remuménage pour un petit fichier vide!!!!!

Qu'il se nomme allo.exe ou zut.exe, ça ne change rien au problème.

Qu'il soit vide ou plein de n'importe quoi, ça ne change rien au problème.

Mon PC tourne courement avec 14 processus, et pas le plus petit antivirus (Je ne suis pas connecté à internet).

La méthode que je connais est la même que celle de Frecki!

tskill explorer puis cmd...

L'idée de Inekman ne me semble pas mauvaise, que ce soit l'icône ou un autre élément de l'en tête qui plante.

En ce qui concerhne mon source.

Je ne chie pas sur les API.

Mais les concepteurs de Visual Basic n'auraient-ils pas oublié de s'arranger pour que dir laisse le dossier qu'il scanne tranquile après avoir fait son job ?

Dans mon application, c'était vraiment un bug de barbare. En effet, c'était un explorateur et j'avais écrit les procédures de suppression de dossier moi même dans une dll.

Je supprimait des dossiers pour tester la routine, et certains refusaient de ce supprimer.

De la à trouver que c'était ceux-ci les derniers scannés par le dir...

Commentaire de bouv le 23/07/2005 13:51:15

Mindiell>>Explique nous comment tu fait pour renommer un exe utilisé par une ressource système. Ou bien ton fichier ne l'est pas et tu peux également le supprimer directement ou bien tu ne peux absolument rien lui faire.

Commentaire de Mindiell le 23/07/2005 15:20:25

Ben moi, quand je veux le détruire, il se met à réfléchir longtemps sans rien faire...
Si je crée le fichier, je le nomme en toto.exe, après je peux le renommer... Il me fait pas d'erreur... :o)

Commentaire de tontonkika le 25/07/2005 16:36:40

Pour revenir au dossiers vides bloqués, j'ai constaté ce phénomène sur beaucoup de machines (et d'os aussi) je ne suis pas sûr que ce soit uniquement le dir qui pose pb. pour éviter tout conflit je fais un CD App.path avant de supprimer un dossier. Pour le moment ca marche pas mal... Si ca peut aider...

Commentaire de CMoiChris le 29/08/2005 00:09:04

Salut à tous,
Le plus simple à faire:
Ctrl + Alt + Suppr
Choisir Gestionnaire de tâches
Onglet Processus
Choisir allo.exe
Clic sur Terminer processus
et voilà !!!
En fait il arrête sauvagement l'appli si elle est chargée en mémoire.
NB: pour killer provisoirement certains virus c'est ça qu'il faut faire.
Bonne programmation à tous, Christophe.

Commentaire de rt15 le 31/08/2005 11:29:09 administrateur CS

CMoiChris,

Je vérifierai ton histoire de suppression de processus, mais ça m'étonne qu'un fichier vide en créer un.

Si c'est le cas, on pourrait probablement s'en servir comme faille Windows, ce qui m'étonnerai donc fortement.

(Execution de code lors d'une tentative de suppression de pièce jointe).

TONTONKIKA,

C'est vrai qu'il y a probablemnt un bug lorsque-l'on essaie de supprimer le dossier courant d'une application.

Commentaire de darkvandrech le 01/09/2005 17:48:37

sous xp sp1 j'arrive pas a enlever ce fichier meme sans l'antivirus mais sous le dos c'est possible sans probleme.
Sinon avec l'aide de tune up utilities 2004 il ce supprime sans probleme meme sous windows.

Commentaire de spidermario le 13/12/2006 08:33:43

Ah, le multi-threading Windows...

Au moins, avec DOS, on est sûr que l'exécutable n'est pas utilisé.

Commentaire de spidermario le 13/12/2006 08:38:15

Dites-moi si je dis une bêtise.

Commentaire de rt15 le 13/12/2006 13:38:34 administrateur CS

Salut,

Bin ça dépend de ce que tu appel le DOS. Avec le vrai DOS (On peut parfois encore y accéder en bootant sur une disquette), tu as effectivment peu de chance qu'un fichier soit utiliser par une application alors que tu essaie de le supprimer, vut que c'est du monotache (Encore qu'un paquet d'efforts on été fait pour le rendre plus ou moins multi.).

Mais avec l'invite de commande de Windows, tu te retrouve en multi. Ici, ça ne règle le problème que car c'est un des processus de windows qui "merde".

Commentaire de spidermario le 13/12/2006 13:56:54

Bah, en même temps, j'ai tout à l'heure essayé de supprimé un .exe qui ne contenait plus grand chose.
Quand je passais par clic droit -> Supprimer ou par la touche Suppr, ça na marchait pas, mais ça a marché avec l'invite de commande DOS, alors que Explorer.exe était toujours lancé.

Ma conclusion : Windows est vraiment bizarre...

Commentaire de Golard le 20/03/2007 12:06:47

Merci beaucoup pour ton coup de main rt15 !

C'est clair, concis et en plus tu apportes la SOLUTION!!!

A lire tous les commentaires de ton post, je pense que les intervenants n'avaient pas vraiment eu le même problème que toi.

Moi si, et je confirme que tu apportes réellement l'analyse complète de ce pb réel.

Commentaire de rt15 le 21/03/2007 09:14:48 administrateur CS

Un an après, mon source fait enfin un heureux. :)

Cool d'autant qu'il est plein d'erreur de syntaxe...
* honte *
Hop mis à jour. Mais pourquoi le compilo les prends sans broncher ??? Genre j'avais du MkDir("bidule").

Bon sinon, comme le dit BruNews, les APIs marchent très bien... Quand on s'en sert correctement.
Par exemple, si on oublie le FindClose, le dossier ne se supprime pas :

Private Sub Command1_Click()
  Dim nFile As Long
  Dim hSearch As Long
  Dim uFindData As WIN32_FIND_DATA

  ' Création d'un répertoire et de deux fichiers
  MkDir "c:\test"
  nFile = FreeFile
  Open "c:\test\Empty1.txt" For Output As #nFile
  Close #nFile
  nFile = FreeFile
  Open "c:\test\Empty2.txt" For Output As #nFile
  Close #nFile

  ' Récupération d'un handle de recherche
  hSearch = FindFirstFile("c:\test\*.txt", uFindData)
  If hSearch = INVALID_HANDLE_VALUE Then
    Debug.Print "Echec du FindFirst."
    Exit Sub
  End If
  
  ' Listage du contenu du répertoire
  Do
    Debug.Print uFindData.cFileName
  Loop Until FindNextFile(hSearch, uFindData) = 0
  If GetLastError <> ERROR_NO_MORE_FILES Then
    Debug.Print "Erreur lors du listage des fichiers."
  End If
  
  ' Suppression des fichiers
  Kill "c:\test\Empty1.txt"
  Kill "c:\test\Empty2.txt"
  
  ' Tentative de suppression qui aboutit à un échec
  If RemoveDirectory("c:\test") = 0 Then Debug.Print "Tu as oublié de fermer la recherche jeune padawan..."
  
  ' Fermeture propre de la recherche
   If FindClose(hSearch) = 0 Then Debug.Print "Erreur lors de la fermeture de la recherche"
  
  ' Cette fois la suppression fonctionne
  If RemoveDirectory("c:\test") <> 0 Then Debug.Print "Voilà qui est mieux !"
  
End Sub


 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Problème de suppression. [ par Marneus73 ] Bonjourà tous J'ai un petit problème de suppression de dossier. J'utilise:Directory.Delete("C:\WINDOWS\system32\Nouveau Dossier", True)Lors de la géné Empecher la suppression de fichiers.. [ par acive ] Salut tout le monde.Auriez vous par hazard une fonction ou appli vb6 ou .Net pour empecher la suppression de fichiers et repertoires? Ou du moins surv [VB.Net] Problème de répertoires de travail [ par moimael ] Salut à tous,   Voila je travaille sur une petit application(déjà disponible au téléchargement) de gestion du Twin (un tel portable) et je viens de m' Forcer la Suppression Fichier [ par ABF ] Bonjour,J'ai regarder sur vbfrance et : je n'ai trouv&#233; qu'1 source mais malheuresement sans grand succ&#232;s.J'aimerais savoir s'il &#233;tais p suppression d'un enregitrement dans une table [ par mokoli2005 ] Salut je suis un d&#233;butant en vb6 et j&#146;ai un probl&#232;me au niveau de la suppression d&#146;un enregistrement. Je vous donne ici mon code e Problème avec Dir... [ par VisualBoinet ] Voila j'ai une fonction récursive avec Dir (je sais y'a beaucoup mieux mais ca m'est imposé ....)Le problème c'est que je n'arrive pas à passer au rép Problème pour nommer un dossier avec la date courante [ par alexalex55 ] Salut à vous, Je voudrais , en VBS , créer un dossier qui porte le nom de la date curante, j'ai utiliser plusieurs méthodes dont une qui fonctionne so Problème de suppression de jobs d'impression [ par LSGSERVAL ] BonjourJe vais commencer par vous dire que je suis débutant en VB 6 et donc je vous demanderais d'être indulgent avec moi.J'ai un petit problème avec Problème de copie d'image [ par NykoKurapika ] Bonjour à tous !voilà, j'ai un gros problème avec la copie d'image.Lors de la création de ma classe, je charge une image externe au programme dans un Bug VBA [ par Papayaga ] Salut,Je ne sais pas si je fais bien de poster dans cette rubrique, mais voilà mon problème: J'ai, par exemple, 2 fichiers excel contenant des macros.


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,593 sec (4)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales