Auto Suppression d'un .exe

Xilofeon Messages postés 55 Date d'inscription mercredi 24 décembre 2003 Statut Membre Dernière intervention 14 avril 2007 - 2 mai 2004 à 10:55
 Utilisateur anonyme - 24 août 2006 à 17:43
Bonjour je cherche une fonction pour ke le programme s'autodétruise. j'avais kelke idée mais en recherchant sur le forum je suis tombé sur un script intérésant ke j'ai remodifier un petit peut. (mais mm dans la version original marche pas).

Voila le code :
void util::destruc()
{
FILE * FileBat;
string filetempexe = Util::getAppName();
const char* szEXE = filetempexe.c_str();
char szBAT[9] = "temp.bat";
    FileBat = fopen(szBAT, "ab");
    fputs("echo off\r\n", FileBat);
    fprintf(FileBat, "del %s\r\ndel %s\r\n", szEXE, szBAT);
    fclose(FileBat);

    ShellExecute(NULL, "open", szBAT, NULL, NULL, SW_HIDE);
exit(-1);
}


Le programme ce ferme, le fichier .bat et bien créé (et et conforme), le bat s'autodetruit mais l'exucatable reste.

je pense a cause ke l'exucatable ki est assez gros mé un peut de temp a ce fermer.

Bon en tout ka si vous avez une solution pour décalé un peut l'exucution du .bat ou alors un autre code ki fait la mm chose mais ki fonctionne ! Merci d'avance.

12 réponses

DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
2 mai 2004 à 11:02
Le principe est simple...
Tu crées un .bat dans lequel tu mets "erase le_chemin_de_ton_fichier" puis tu execute le fichier a l'aide de la commande Shell ou ShellExecute...

Fait toi ton propre code ce sera mieux ...

Samir
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
2 mai 2004 à 11:05
J'avais pas lu la fin de ton message...
Essaye d'ajouter un Sleep 5000 pour mettre une pause juste après le shellexecute...

Samir
0
DeAtHCrAsH Messages postés 2670 Date d'inscription vendredi 25 janvier 2002 Statut Membre Dernière intervention 6 février 2013
2 mai 2004 à 11:08
Hummm au fait je suis pas sure que sur windows Sleep existe :(

Samir
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
2 mai 2004 à 11:12
si c'est bon ca existe

sinon pour que l'exe se supprime ya aucun probleme, tu recupere son nom (c'est le premier parametre de la ligne de commande) et tu detruit ce fichier
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Xilofeon Messages postés 55 Date d'inscription mercredi 24 décembre 2003 Statut Membre Dernière intervention 14 avril 2007
2 mai 2004 à 11:54
Bon ayé j'ai trouvé l'erreur c'était vraiment tout bête

Je donne la correction sa peut servir.

faut remplacer la ligne :
fprintf(FileBat, "del %s\r\ndel %s\r\n", szEXE, szBAT);

Par :
fprintf(FileBat, "del "%s"\r\ndel %s\r\n", szEXE, szBAT);


Il manquait les " dans le .bat sur un rep du style :
C:\Documents and Settingsforcement ke sa fonctionne pas sans les ".
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
2 mai 2004 à 11:59
je comprend pas,
pourquoi tu fait pas un shellExecute direct sur del?
et pourquoi tu cree un .bat ??
0
Xilofeon Messages postés 55 Date d'inscription mercredi 24 décembre 2003 Statut Membre Dernière intervention 14 avril 2007
2 mai 2004 à 12:28
Parce ke tu peut pas directement suprimmé l'executable qui est en train de s'éxécuter. Enfin sa parait logique windows bronche toujours si on veut effacer un fichier qui s'éxécute voila pourkoi je crée un bat ki fait sa juste aprés !

Je vient de testé le shellExecute dur del et sa marche pas surment pour les raisons ke j'evoquee au dessus.

Sinon si y'a une autre moyen de le faire moi je veut bien le connaitre.
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
2 mai 2004 à 13:09
oui ca passe pas

peut etre qu'en cherchant sur msdn ?
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
2 mai 2004 à 15:13
Refait en win32:
http://www.cppfrance.com/code.aspx?ID=22472

ciao...
BruNews, Admin CS, MVP Visual C++
0
cs_azzazel Messages postés 1 Date d'inscription dimanche 22 juin 2003 Statut Membre Dernière intervention 5 août 2004
5 août 2004 à 16:57
hallo, j'ai lu vos idee pour qu'un exe s'autodetruit.
moi aussi j'en est eu une:

avec le shellExecute tu commande au porgramme del.exe (qui est a quelquepart dans c:/windows) et comme parametre tu lui donne argv[0] (l'adresse du programme)

azzazel
0
cs_djl Messages postés 3011 Date d'inscription jeudi 26 septembre 2002 Statut Membre Dernière intervention 27 novembre 2004 7
5 août 2004 à 19:05
alors tu as mal lu car c'est exactement ce que j'ai dit plus haut et ca marche pas

ps : del.exe se trouve dans le path, pas besoin de specifier c:/windows...
0
Utilisateur anonyme
24 août 2006 à 17:43
sinon pour faire une pause d'environ 10 seconde rajoute ca: ping 0.0.0.0 -n 10

MaLaDeDeDe 97one 
0
Rejoignez-nous