Bonjour,
j'ai un problème de suppression de répertoire dans un fichier .bat.
Je créée dans mon appli un fichier .bat d'autodestruction que j'appelle avant de quitter l'appli.
Voici le code de la fonction de création de ce fichier :
void AutoSuppression (void)
{
HANDLE hfl;
DWORD len, d, v, x;
char buff[268], szexe[272], szbat[272];
CString tmpfnd,msg;
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;
//Instruction autodestruction du .bat (écrite à la fin de ce fichier)
*((DWORD*) szbat) = 0x206C6564; // "del "
len = GetShortPathName(buff, szbat+4, 264) + 4;
//ECHO OFF
*((DWORD*) szexe) = 0x6F686365; // "echo"
*((DWORD*) (szexe+4)) = 0x66666F20; // " off"
*((WORD*) (szexe+8)) = 0x0A0D;
WriteFile(hfl, szexe, 10, &v, 0);
//Instruction destruction du .exe
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);
//Instruction destruction du Rep racine
szexe[0] = 'r';
szexe[1] = 'd';
sprintf(szexe+2,"%s",sChemin);
x = sChemin.GetLength()+2;
szexe[x] = '/';
szexe[x+1] = 's';
szexe[x+2] = ' ';
szexe[x+3] = '/';
szexe[x+4] = 'q';
szexe[x+5] = 13;
szexe[x+6] = 10;
WriteFile(hfl, szexe, x+6, &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);
}
Quand j'exécute l'appli, tout se passe bien.
Quand je quitte l'appli, pas d'erreur mais le répertoire est toujours présent alors que le fichier a été supprimé.
Quelqu'un a t il une idée?
Merci d'avance,
--------------------------------------------------------------------------------
Phantom_2005 
<font color="#0000