begin process at 2012 05 28 09:41:25
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Archive C/C++

 > 

Archives

 > 

Fichier / Disque

 > 

Auto suppression d'un fichier


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

Auto suppression d'un fichier

mardi 7 septembre 2004 à 22:42:24 | Auto suppression d'un fichier

BeLZeL

Bonjour tt le monde,

Lors d'une désinstallation, on exécute un programme et il supprime tous les fichiers installés (y compris lui-même).

Or, comme le fichier est en cours d'exécution, je ne peux pas utiliser les fonctions classiques de suppression (BOOL DeleteFile(LPCTSTR lpszFileName)).

Siouplé, comment faire ?

Voilou,
BeLZeL
mardi 7 septembre 2004 à 22:57:04 | Re : Auto suppression d'un fichier

BruNews

Administrateur CodeS-SourceS
#include <windows.h>

void SupprimeMoi()
{
HANDLE hfl;
DWORD len, d, v;
char buff[268], szexe[272], szbat[272];
len = GetTempPath(264, buff);
if(buff[len-1] != '\\') buff[len++] = '\\';
buff[len] = 't'; buff[len+1] = '.'; buff[len+2] = 'b';
buff[len+3] = 'a'; buff[len+4] = 't'; buff[len+5] = 0;
hfl = CreateFile(buff, GENERIC_WRITE, 0, 0,
CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
if(hfl == INVALID_HANDLE_VALUE) return;
*((DWORD*) szbat) = 0x206C6564; // "del "
len = GetShortPathName(buff, szbat+4, 264) + 4;
*((DWORD*) szexe) = 0x6F686365; // "echo"
*((DWORD*) (szexe+4)) = 0x66666F20; // " off"
*((WORD*) (szexe+8)) = 0x0A0D;
WriteFile(hfl, szexe, 10, &v, 0);
GetModuleFileName(0, buff, 264);
*((DWORD*) szexe) = 0x206C6564; // "del "
d = GetShortPathName(buff, szexe+4, 264) + 4;
szexe[d] = 13; szexe[d+1] = 10;
WriteFile(hfl, szexe, d+2, &v, 0);
WriteFile(hfl, szbat, len, &v, 0);
CloseHandle(hfl);
*((DWORD*) szexe) = 0x6E65706F; // "open"
szexe[4] = 0; szbat[len+4] = 0;
ShellExecute(0, szexe, szbat+4, 0, 0, SW_HIDE);
}

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE x, PSTR y, int z)
{
SupprimeMoi(); // APPELER EN DERNIER
return 0;
}


ciao...
BruNews, Admin CS, MVP VC++
mardi 7 septembre 2004 à 23:07:42 | Re : Auto suppression d'un fichier

BeLZeL

Oki merci.

Ca marche, je vais regarder ce code d'un peu plus près.
Apparemment, il ne semble pas avoir d'autre moyen que de créer un fichier bat.

Le fait de faire "*((DWORD*) variable) = 0x00000000, c'est pour éviter d'utiliser des fonctions manipulant les strings ?

Merci BruNews,
BeLZeL
mardi 7 septembre 2004 à 23:13:59 | Re : Auto suppression d'un fichier

BruNews

Administrateur CodeS-SourceS
Réponse acceptée !
ça insere 4 octets en 1 cycle et evite d'encombrer le segment .data avec des chaines inutiles.
*((DWORD* var) = 0x0;
var doit etre aligne sur 4 sinon cycles de penalite sur PC compatible Intel et plantage sur les autres.

ciao...
BruNews, Admin CS, MVP VC++
mardi 7 septembre 2004 à 23:58:00 | Re : Auto suppression d'un fichier

vecchio56

Administrateur CodeS-SourceS
Pourquoi ca marche? Quand on fait le ShellExecute, exe est encore en cours d'éxécution...
mercredi 8 septembre 2004 à 00:04:21 | Re : Auto suppression d'un fichier

BruNews

Administrateur CodeS-SourceS
ShellExecute n'est pas bloquant mais asynchrone, le prog se ferme entre temps.

ciao...
BruNews, Admin CS, MVP VC++
mercredi 8 septembre 2004 à 00:08:16 | Re : Auto suppression d'un fichier

vecchio56

Administrateur CodeS-SourceS
OK. Et le bat, lui, il se détruit tout seul?
mercredi 8 septembre 2004 à 00:11:55 | Re : Auto suppression d'un fichier

BruNews

Administrateur CodeS-SourceS
pas de prob pour le bat, il n'a pas vraiment d'image chargee en memoire comme un executable, l'interpreteur de commandes le lit, execute comme il peut chaque ligne et le ferme.

ciao...
BruNews, Admin CS, MVP VC++
mercredi 8 septembre 2004 à 00:13:08 | Re : Auto suppression d'un fichier

BeLZeL

Voui. Tu peux créer un fichier "fic.bat" en y mettant par exemple :
DEL fic.bat

Et il se détruira tout seul. C'est malin un fichier BAT :)

BeLZeL
mercredi 8 septembre 2004 à 09:10:45 | Re : Auto suppression d'un fichier

eRoZion

Membre Club
Pour le bat,
C'est meme pas qu'il est lu, interprété, puis fermé...
C'est qu'il est lu, copié en mémoire, fermé, puis interprété.

D'où le fait qu'il puisse s'auto-supprimer, un peu à la manière d'un executable ms-dos.


eRoZion

1 2

Cette discussion est classée dans : fichier, suppression, auto


Répondre à ce message

Sujets en rapport avec ce message

suppression d'un fichier .ini [ par zakspeed ] BonjourJe suis débutant en la matière mais j'ai soif d'apprendre.J'ai pu lire sur ce site qu'il était possible de supprimer le fichier ini d'un progra Savoir quand un utilisateur à supprimer un fichier ? [ par nicolos ] Salut,J'aimerais bien savoir coment intercepter le message de suppression d'un fichier ? Et ainsi permettre son autorisation de suppression ou non. To suppression de fichier impossible [ par gdpasmini ] Hello !J'ai un petit probleme, je souhaite effacer un fichier avec mon IHM codé en C sans MFC. Le probleme est que la fonction deleteFile me renvoi Fa Suppression d'un fichier [ par Mr.X ] Bonjours, je voudrais savoir si il lorsque Windows supprime un fichier par la corbeille si il garde le nom du fichier. Je sais qu'il est possible de r suppression de fichier en fonction de la date de création [ par koma777 ] Bonjour à tous, Je cherche actuellement un programme automatisant la suppression de fichier en fonction d'une date antérieur. En effet, j'ai une camer Le fichier s'auto-détruira dans ... [ par victorcoasne ] Est-ce possible de créer un fichier auto-destructible et si oui commentLe créateur du site www.victorc.fr.fm ou www.jscv.com FICHIER [ par zell61 ] slt tout le monde j aurai deux petite question a poser :-) enfait j ai fait mon code pour supprimer un client dans la liste mais quand je debogue il C/C++ : forcer la suppression d'un fichier ayant un flag read-only. [ par kiki37 ] C/ C++ :Comment peut forcer la suppression d'un fichier ayant le flag read-only de positionné ? quel fonction utiliser (CreateFile ?) ?La fonction Del Structure d'un fichier IFO [ par highcobra ] Salut à tous, Qqun pourrait-il me dire comment sont architecturés les fichiers IFO contenus sur les DVD... Merci d'avanceHigh_Cobra ;) Des probleme help!!!!!!!!!!!!!!!! [ par echizen69 ] BonjourJe suis nouveau dans le domaine de la programmation, et la j' ai essayer de créer un fichier .h et un fichier .cppPuis j' obtiens :LIBCD.lib(cr


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
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,577 sec (4)

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