1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57
|
int TuerProcess(char* Process)
{
STARTUPINFO si; /* Requis par CreateProcess */
PROCESS_INFORMATION pi; /* Requis par CreateProcess */
LPTSTR szCmdline;
char* CmdTuerProcess = malloc (sizeof (*CmdTuerProcess));
/* La structure si est utilisée en entrée donc elle doit être impérativement initialisée */
ZeroMemory(&si, sizeof(si));
/* Pas la peine d'initialiser la structure pi car elle sera écrite et non lue */
//Initialisation du chemin du package d'installation
sprintf(CmdTuerProcess, "%s%s%s", "\"taskkill /F /IM ", Process, " /T\"");
szCmdline = TEXT(CmdTuerProcess);
if((int) DebugMode==WINLOG_LEVEL_09)
{
INFO2("CmdTuerProcess=%s", szCmdline);
}
INFO2("CmdTuerProcess=%s", szCmdline);
//Initialisation du process d'installation
if (CreateProcess( szCmdline, /* Nom de l'exécutable */
NULL, /* Arguments de la ligne de commande */
NULL, /* Attributs de sécurité du nouveau processus (processus fils) */
NULL, /* Attributs de sécurité du thread principal */
FALSE, /* Le processus fils héritera t-il des handles du processus père */
0, /* Flags de création */
NULL, /* Variables d'environnement */
NULL, /* Répertoire courant */
&si, /* Paramètres d'initialisation du processus */
&pi /* Informations sur le processus */ )!=0)
{
WaitForSingleObject(pi.hProcess, INFINITE); /* Attendre la fin du processus */
CloseHandle(pi.hProcess); /* Fermer le handle vers le processus */
CloseHandle(pi.hThread); /* Fermer le handle vers le thread principal du processus */
free(CmdTuerProcess);
return(TRUE);
}
else
{
WinLogW(WinLog_Error, WINLOG_LEVEL_09, L"Code Erreur CreateProcess = %d", GetLastError());
if((int) DebugMode==9)
{
ERROR2("Process=%s", Process);
}
free(CmdTuerProcess);
return(FALSE);
}
} |
Partager