FAITES GAFFE À DIR()

cs_Urgo Messages postés 780 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 avril 2009 - 20 juil. 2005 à 17:27
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 - 21 mars 2007 à 09:14
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/32807-faites-gaffe-a-dir

cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
21 mars 2007 à 09:14
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
cs_Golard Messages postés 7 Date d'inscription mardi 13 décembre 2005 Statut Membre Dernière intervention 23 septembre 2010
20 mars 2007 à 12:06
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.
spidermario Messages postés 121 Date d'inscription mercredi 26 octobre 2005 Statut Membre Dernière intervention 14 mars 2009 1
13 déc. 2006 à 13:56
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...
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
13 déc. 2006 à 13:38
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".
spidermario Messages postés 121 Date d'inscription mercredi 26 octobre 2005 Statut Membre Dernière intervention 14 mars 2009 1
13 déc. 2006 à 08:38
Dites-moi si je dis une bêtise.
spidermario Messages postés 121 Date d'inscription mercredi 26 octobre 2005 Statut Membre Dernière intervention 14 mars 2009 1
13 déc. 2006 à 08:33
Ah, le multi-threading Windows...

Au moins, avec DOS, on est sûr que l'exécutable n'est pas utilisé.
darkvandrech Messages postés 1 Date d'inscription vendredi 10 septembre 2004 Statut Membre Dernière intervention 1 septembre 2005
1 sept. 2005 à 17:48
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.
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
31 août 2005 à 11:29
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.
cs_CMoiChris Messages postés 13 Date d'inscription dimanche 18 juillet 2004 Statut Membre Dernière intervention 6 décembre 2005
29 août 2005 à 00:09
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.
tontonkika Messages postés 4 Date d'inscription mardi 25 mai 2004 Statut Membre Dernière intervention 25 juillet 2005
25 juil. 2005 à 16:36
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...
Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
23 juil. 2005 à 15:20
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)
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
23 juil. 2005 à 13:51
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.
cs_rt15 Messages postés 3874 Date d'inscription mardi 8 mars 2005 Statut Modérateur Dernière intervention 7 novembre 2014 13
23 juil. 2005 à 10:53
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...
Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
23 juil. 2005 à 09:14
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)
KaViDee Messages postés 262 Date d'inscription dimanche 1 septembre 2002 Statut Membre Dernière intervention 18 juin 2008
23 juil. 2005 à 02: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.
Inekman Messages postés 291 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 30 juin 2006
23 juil. 2005 à 01:45
"mais pourquoi bloque t'il allo.exe? je n'en sais rien"

--> Surement pour la raison que j'ai cité.
Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
23 juil. 2005 à 00:43
ben on peut aussi simplement renommer le fichier .exe en .txt hein quand même plutot que de tout arreter les processus ;o)
cs_Frecky Messages postés 85 Date d'inscription lundi 18 février 2002 Statut Membre Dernière intervention 20 novembre 2005
22 juil. 2005 à 22:39
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
rayjul Messages postés 13 Date d'inscription jeudi 2 décembre 2004 Statut Membre Dernière intervention 24 septembre 2008
22 juil. 2005 à 07:04
J'ai exactement le même problème avec le fichier index.dat de temporary intenet files. Avez-vous essayez de le supprimer?
MrdJack Messages postés 146 Date d'inscription jeudi 22 avril 2004 Statut Membre Dernière intervention 8 mars 2008 2
22 juil. 2005 à 04:43
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....
KaViDee Messages postés 262 Date d'inscription dimanche 1 septembre 2002 Statut Membre Dernière intervention 18 juin 2008
21 juil. 2005 à 14:06
Mindiell -> meme avec 4 octets, ça persiste...
Inekman Messages postés 291 Date d'inscription dimanche 2 février 2003 Statut Membre Dernière intervention 30 juin 2006
21 juil. 2005 à 13:49
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...
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
21 juil. 2005 à 10:27
Au fait perso j'ai Symantec Antivirus Corporate Edition v10
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
21 juil. 2005 à 10:26
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à...

...
Mindiell Messages postés 558 Date d'inscription jeudi 25 juillet 2002 Statut Membre Dernière intervention 5 septembre 2007 1
21 juil. 2005 à 10:20
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)
bouv Messages postés 1411 Date d'inscription mercredi 6 août 2003 Statut Membre Dernière intervention 3 mars 2019 1
21 juil. 2005 à 10:14
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...
crenaud76 Messages postés 4172 Date d'inscription mercredi 30 juillet 2003 Statut Membre Dernière intervention 9 juin 2006 28
21 juil. 2005 à 10:09
Pas de souci non plus pour moi avec XP SP1, même avec Norton Antivirus, Avaast, Kapersky ou AVG activé ...

Christophe R.
cs_Frecky Messages postés 85 Date d'inscription lundi 18 février 2002 Statut Membre Dernière intervention 20 novembre 2005
21 juil. 2005 à 03:31
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
KaViDee Messages postés 262 Date d'inscription dimanche 1 septembre 2002 Statut Membre Dernière intervention 18 juin 2008
21 juil. 2005 à 01:39
---------------------------
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...
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
20 juil. 2005 à 23:59
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.
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
20 juil. 2005 à 21:16
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

@+
cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
20 juil. 2005 à 17:38
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.
cs_Urgo Messages postés 780 Date d'inscription lundi 16 décembre 2002 Statut Membre Dernière intervention 16 avril 2009 1
20 juil. 2005 à 17:27
Ton OS doit avoir un problème, ton défi je l'ai réalisé en 2 tours 3 mouvements... sous XP SP2.
Rejoignez-nous