Я знаю, что это - странная ситуация, но я должен встроить EXE-файл (или ассемблерный код) в мой проект, таким образом, это может быть запущено только приложением (это не может создать EXE в файловой системе и запустить его)...
Действительно ли это возможно?
Править:
Это не EXE.NET. Так или иначе я добавил файл Test.exe как ресурс к моему проекту, и я сделал это
Dim exestr As Stream = Nothing
Dim a As Assembly = Assembly.GetExecutingAssembly
exestr = a.GetManifestResourceStream("Test.exe")
Я думаю создать RAM диск, записать на него ваш exe файл/ы из вашего .NET ресурсного файла, и выполнить файл там. Ничего не трогать с физического диска.
У меня нет ссылки на API программируемого RAM-диска, но вы, вероятно, сможете найти что-то, чем можно манипулировать из вашей программы. Другим преимуществом является то, что сканеры вирусов могут распознать его для безопасности.
Также я думаю, что если ваше приложение работает на диске, то нет веских причин, почему исполняемый файл не может быть на диске. Если вы передаете его по сети (скачиваете) или что-то в этом роде, то сначала сохраните его на диск и сотрите после завершения выполнения.
Если EXE - это сборка .Net, вы можете встроить скомпилированный двоичный файл в свою (внешнюю) программу, загрузить ее с помощью Assembly.Load ( byte [])
. РЕДАКТИРОВАТЬ : Поскольку это не так, вы не можете.
После загрузки сборки вы можете вызывать функции из внутренней сборки (например, метод Main
), как и любую другую сборку, или вы можете написать AppDomain.CurrentDomain.ExecuteAssembly (innerAssembly.FullName )
.
Невозможно. Это было основным проектным решением, принятым Дейвом Катлером и соавторами при разработке Windows NT. Процесс должен быть подкреплен файлом в файловой системе. Windows использует файл с отображением памяти для отображения кода процесса в виртуальную память. Для программы .NET это не отличается, даже если большая часть ее кода компилируется JIT в память. Сборка, содержащая IL, сопоставляется таким же образом.
Это полезно не только для эффективной работы операционной системы: пользователям и сканерам вирусов очень не нравится исполняемый код, выскакивающий из ниоткуда.