1. Мегаконкурс в апреле "Приведи друзей на codeby". Дарим деньги, подписку на журнал хакер и выдаем статус "Paid Access". Подробнее ...

    Скрыть объявление

Запуск приложения

Тема в разделе ".NET", создана пользователем Flid, 10 окт 2009.

Наш партнер Genesis Hackspace
Статус темы:
Закрыта.
  1. Flid

    Flid Гость

    Пусть есть на диске exe файл с приложением A. Оно не обязательно написано на .NET. Цель моей проги (B - написана на C#) похожа на цель вируса - заменить этот exe на себя. При запуске B нужно выполнить какие-то действия и затем запустить приложение A, как будто ничего не произошло. Приложение A будет лежать где-то либо на диске в отдельном файле, переименованное во что-то неузнаваемое (и переименовывать в *.exe нельзя), либо как часть приложения B, что предпочтительнее. Есть идеи, как это можно реализовать? И возможно ли это вообще?


    Пробовал запускать .NET сборки через System.Reflection.Assembly. Взял пример из MSDN. Попробовал сделать так:

    Код C#

    Код (Text):
                //читаем сборку из файла
    System.IO.FileStream FS = new FileStream("C:\\filename.exe",FileMode.OpenOrCreate);
    byte[] b = new byte[FS.Length];
    FS.Read(b, 0, (int)FS.Length);

    Assembly ExternalAssembly = Assembly.Load(b);
    Assembly CurrentAssembly = Assembly.GetExecutingAssembly();
    Object o = CurrentAssembly.CreateInstance("Poligon.Form1");
    ExternalAssembly.EntryPoint.Invoke(o, null);
    Invoke мне радостно сообщает, что у исполняемого метода вывалилось исключение. Опытным путем выяснилось, что исключение это такое: System.InvalidOperationException: до создания первого объекта IWin32Window в приложении необходимо вызвать Application.SetCompatibleTextRenderingDefault.
    Что самое интересное, это исключение происходит как раз при вызове Application.SetCompatibleTextRenderingDefault(fals e) в запускаемом приложении!
    Что за фигня?
     
  2. WildDuck

    WildDuck Гость

    Если вы хотите просто запустить приложение то можно так...

    Код (Text):
    using System.Diagnostics;
    ...
    ProcessStartInfo startInfo = new ProcessStartInfo(@".\utils.exe");
    Process.Start(startInfo);
     
  3. Flid

    Flid Гость

    отлично... а теперь представим, что у меня нет exe файла на диске, есть только в памяти. У меня есть байтовый массив с исполняемым файлом и его мне нужно запустить в текущем процессе. Создавать файл на диску и записывать туда exeшник запрещено. Я вот это пытаюсь сделать
     
  4. etc

    etc Гость

    тут вин32 нужен
     
  5. European

    Регистрация:
    4 сен 2006
    Сообщения:
    2.566
    Симпатии:
    1
    Закрыто. п.4.5.4 правил
     
Загрузка...
Похожие Темы - Запуск приложения
  1. Shouldercannon
    Ответов:
    6
    Просмотров:
    3.640
  2. Allexei
    Ответов:
    3
    Просмотров:
    8.565
  3. KorVas
    Ответов:
    7
    Просмотров:
    61
  4. sainethat
    Ответов:
    13
    Просмотров:
    485
  5. M.Planck
    Ответов:
    5
    Просмотров:
    156
Статус темы:
Закрыта.

Поделиться этой страницей