Надо "засунуть" ексе в ексе
Ну в .NET есть рефлексия, которой можно из одной программы подключаться к exe`шнику другой, как к библиотеке и выполнять от туда разные методы.
Что касается Win32, тут ничего сказать не могу.
Только надо понимать, что такое прокатит не с любой программой, а с той, где есть публичные методы.
Все как всегда очень просто, все что нужно это поместить в ресурсы exe файл. потом при необходимости запустить процесс: сохраняем файл на винт запускаем процесс, после работы файл можно удалить. А в случаее если нужны разные методы то, тогда просто делаем Reference на этот exe(обязательно должен быть файлом .NET) и дергаем из него публичные классы.
Ресурсы - не выход, их можно довольно просто изучить.
По мне так, самый эффективный способ - это сгенерировать резидентую программу, что называется "на лету" (и антивирус будет не против, и изучать такой код посложнее, чем смотреть ресурсы). Тем более в .net это элементарно.
В процессе работы основной программы создаем исходник (например на C#), компилируем с помощью Microsoft.CSharp.Compiler и
запускаем. А для особых ценителей CIL, можно заюзать разные полезности пространства имен System.Reflection.Emit.
Пример на VB.NET был в сборнике статей на CodeNet.ru.
hardcase говорил не об этом. :) Мне вот интересно, в чём великий смысл пихания "левого ексе" в свою прогу? Зачем в другую копию своей проги? Что такое "другая копия"? Зачем эта карусель с чтением по байтам?