Bonjour,

Pour un syst�me de mise � jour automatique je cherche � faire la chose suivante :

Un ex�cutable qui charge un autre .exe en m�moire, et qui le lance.

Pour se faire, j'ai utilis� ce code :


Code : S�lectionner tout - Visualiser dans une fen�tre � part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
void __fastcall TForm1::Button1Click(TObject *Sender)
{
	STARTUPINFO si;
	PROCESS_INFORMATION pi;
	memset(&si,0,sizeof(si));
	memset(&pi,0,sizeof(pi));
	si.cb = sizeof(si);
//	if (CreateProcess(NULL,"element.exe",0,0,FALSE,CREATE_DEFAULT_ERROR_MODE,0,0,&siStartupInfo,&piProcessInfo) != false)
 
	if (CreateProcess(NULL,"element.aze",0,0,FALSE,CREATE_SUSPENDED,0,0,&si,&pi) != false)
	{
		HANDLE buffer;
		buffer = pi.hProcess;
		char *buff;
		buff =(char*) pi.hThread; // tentative de récupérer un pointeur sur le code exécutable : ça ne fonctionne pas :(
		// attendre la fin de l'execution de l'element.exe
 
		ResumeThread(pi.hThread);
		int ExitCode = WaitForSingleObject(pi.hProcess,20000);
 
		MessageBox(0,"2","mklj",0);
	}
 
}
Sauf que maintenant je voudrais que mon element.exe ( renomm� element.aze afin de faire moins "executable" de l'ext�rieur ) puisse �tre modifi� afin d'empecher son lancement seul ( genre enlever le "MZ" du d�but de fichier EXE, ou modifier les premiers octets du code ex�cutable ).

Est-il possible de r�cup�rer un pointeur sur le code ex�cutable afin de remettre les premiers octets correctes avant de le lancer.

Je voudrais vraiment le faire uniquement en m�moire, sans modifier le fichier "avant lancement".

Est-ce possible ?