Salut,
Sur le plan purement théorique, il n'est pas possible de charger un .exe dans un processus et de le faire tourner. Le problème vient du fait que les .exe sont (généralement) conçut pour tourner à une adresse précise.
Tu lances ton processus hôte Host.exe, qui veut l'adresse 12. Comme il est pas petit, il va consommer de l'adresse 12 à l'adresse 15.
Puis tu veux charger Child.exe. Rien ne te dit que Child.exe ne veut pas les adresses de 14 à 17. De plus, mis à part Host.exe, dans la mémoire de ton processus, tu as une pile, un tas, et toutes les dlls chargées par Host.exe.
Conclusion : faire un logiciel capable d'héberger un logiciel quelconque est impossible.
Par contre, il y a les dlls... Les dlls, ressemble à s'y méprendre à des .exe, et respèctent le même format de fichier. Cependant, quand on compile (Ca doit plutôt se faire au link d'ailleur) une dll, on peut préciser son adresse préférée, mais ce n'est pas une adresse forcée. La dll inclus en effet une table de relocation, qui permet à Windows de corriger la dll si elle est chargée à une autre adresse.
C'est ainsi que svchost n'héberge pas des .exe, mais des .dll. Sur cette page, on peut voir les principale correspondances
dll <-> service.
Plus d'infos ici.