begin process at 2012 02 10 09:08:56
  Trouver un code source :
 
dans
 
Accueil > Forum > 

C++ & C++ .NET

 > 

Windows

 > 

Fichier & Disque

 > 

AutoSuppression et .bat


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

AutoSuppression et .bat

mercredi 21 mai 2008 à 11:50:02 | AutoSuppression et .bat

phantom_2005


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

mercredi 21 mai 2008 à 14:48:32 | Re : AutoSuppression et .bat

jfrancois

Bonjour,

Le remplissage des chaînes est incorrects. Par exemple :

*((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;

Il manque l'espace entre rd et le chemin, le chemin est tronqué et il manque le terminateur ! Pourquoi ne pas tout placer dans le sprintf() ???

sprintf(szexe,"rd %s /s/q\r\n",sChemin);

Idem avec :

//ECHO OFF
*((DWORD*) szexe)  = 0x6F686365; // "echo"
*((DWORD*) (szexe+4)) = 0x66666F20; // " off"
*((WORD*) (szexe+8)) = 0x0A0D;

Pas de terminateur !

strcpy(szexe,"echo off\r\n");


Jean-François



Cette discussion est classée dans : dword, len, buff, hfl, szexe


Répondre à ce message

Sujets en rapport avec ce message

Ajout d'une ressource partagée [ par sam2004 ] Bonjout tous,mon pb est le suivant : j'ai suivit toutes les etapes necessaire afin de mettre en marche un programme qui permettre l'ajout d'un part compréhension d'un bout de code [ par albert0 ] Bonsoir, voila, j'essai de comprendre a quoi sert une fonction..... sans succes! voila la fonction: void *DetourFunc( BYTE *src, const BYTE *dst, HOOK PROBLEME DLL [ par wxccxw ] hello, je vais une dll de hook et j'obtient sa :MON CODE :#include FARPROC fpRegQueryValueEx; // Buffer de l'adresse de la fonctionFARPROC fpRegOpenKe DnsQuery, hook et detours [ par wxccxw ] Bonjour, j'ai ecrit une dll que j'injecte dans IE ou firefox pour savoir l'host qu'il demande a charger afin de filtrer. voici donc le code [code=cp Segmentation fault [ par SergentP ] Salut à tous, J'obtiens l'érreur "Segmentation fault" lorsque je compile ce code(lit les lignes d'un fichier et extrait une certaine partie de chacune NET-SNMP en C avec localhost ? [ par mehdi881 ] Bonjour, je découvre le SNMP et j'ai développé le petit programme qui suit, à l'aide du tutoriel officiel de NET-SNMP. Il s'agit en gros du programme CreateThread template [ par Pistol_Pete ] Bonjour à tous, Je cherche à multithreader une fonction template. L'exemple qui suit est un petit exemple de ce que je souhaite faire. J'obtiens l' [C++] Violation d'accès lors de la lecture de l'emplacement 0xfdfdfdfd. [ par 3Fred9 ] Bonjour, J'ai changé de compilateur de Visual C++ 6 à Visual Studio 2005 et depuis j'ai une fonction qui plante à l'exécution par une violation d'acc [ServiceWin32] Lancer une Dll grace à SVCHOST.EXE [ par xela138 ] Bonjour, Je souhaiterai obtenir de l'aide, je n'arrive pas à lancer un service de ma conception. Il s'installe à priori sans probleme, mais quand le s error C3070: 'System::String::default' : la propriété n'a pas de méthode 'set' [ par sarahim ] Salut, jai recontré 4 erreurs de gaure :error C3070: 'System::String::default' : la propriété n'a pas de méthode 'set' a les ligne suivante de mon cod


Nos sponsors


Sondage...

CalendriCode

Février 2012
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
272829    

Consulter la suite du CalendriCode

Photothèque

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

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