Запустить сборку как процесс - PullRequest
2 голосов
/ 13 декабря 2011

Например, я загружаю файл EXE или MSI из базы данных в виде байтового массива.И я хочу запустить это.Я могу сохранить его в файл, а затем Process.Start (путь).Но если я не хочу создавать настоящий файл, могу ли я сделать то же самое, например, из Assembly?

Большое спасибо!

Ответы [ 2 ]

4 голосов
/ 13 декабря 2011

Если байтовый массив представляет собой сборку .NET, вы можете использовать Assembly.Load с байтовым массивом, а затем использовать отражение для работы с типами, содержащимися в сборке.В этой статье демонстрируется метод .

. Он загружает его непосредственно в ваш процесс, поэтому он работает как сборка, на которую ссылаются.

Однако, если файл является собственным исполняемым файлом,это не будет работать - потребуется другая техника.Лично на этом этапе я бы сохранил его на диск и выполнил.Однако есть подходы, использующие CreateProcess и проверяющие блок среды процесса .Однако для корректной работы это может потребовать небезопасного кода на C #, смешанного с P / Invoke.

0 голосов
/ 13 декабря 2011

Да, и, кстати, MSI не является исполняемым напрямую.Он должен быть сохранен на диск и вызван через msiexec.

Что касается остальных, подумайте, что именно вы пытаетесь сделать.Если вам нужно решить общий случай, вы будете записывать их на диск и выполнять их тоже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...