.NET: встройте EXE-файл в мой проект

Я знаю, что это - странная ситуация, но я должен встроить EXE-файл (или ассемблерный код) в мой проект, таким образом, это может быть запущено только приложением (это не может создать EXE в файловой системе и запустить его)...

Действительно ли это возможно?

Править:

Это не EXE.NET. Так или иначе я добавил файл Test.exe как ресурс к моему проекту, и я сделал это

   Dim exestr As Stream = Nothing
   Dim a As Assembly = Assembly.GetExecutingAssembly
   exestr = a.GetManifestResourceStream("Test.exe")  
7
задан Peter Mortensen 30 July 2010 в 11:10
поделиться

3 ответа

Я думаю создать RAM диск, записать на него ваш exe файл/ы из вашего .NET ресурсного файла, и выполнить файл там. Ничего не трогать с физического диска.

У меня нет ссылки на API программируемого RAM-диска, но вы, вероятно, сможете найти что-то, чем можно манипулировать из вашей программы. Другим преимуществом является то, что сканеры вирусов могут распознать его для безопасности.

Также я думаю, что если ваше приложение работает на диске, то нет веских причин, почему исполняемый файл не может быть на диске. Если вы передаете его по сети (скачиваете) или что-то в этом роде, то сначала сохраните его на диск и сотрите после завершения выполнения.

2
ответ дан 6 December 2019 в 23:04
поделиться

Если EXE - это сборка .Net, вы можете встроить скомпилированный двоичный файл в свою (внешнюю) программу, загрузить ее с помощью Assembly.Load ( byte []) . РЕДАКТИРОВАТЬ : Поскольку это не так, вы не можете.

После загрузки сборки вы можете вызывать функции из внутренней сборки (например, метод Main ), как и любую другую сборку, или вы можете написать AppDomain.CurrentDomain.ExecuteAssembly (innerAssembly.FullName ) .

4
ответ дан 6 December 2019 в 23:04
поделиться

Невозможно. Это было основным проектным решением, принятым Дейвом Катлером и соавторами при разработке Windows NT. Процесс должен быть подкреплен файлом в файловой системе. Windows использует файл с отображением памяти для отображения кода процесса в виртуальную память. Для программы .NET это не отличается, даже если большая часть ее кода компилируется JIT в память. Сборка, содержащая IL, сопоставляется таким же образом.

Это полезно не только для эффективной работы операционной системы: пользователям и сканерам вирусов очень не нравится исполняемый код, выскакивающий из ниоткуда.

5
ответ дан 6 December 2019 в 23:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: