F
Flid
Пусть есть на диске exe файл с приложением A. Оно не обязательно написано на .NET. Цель моей проги (B - написана на C#) похожа на цель вируса - заменить этот exe на себя. При запуске B нужно выполнить какие-то действия и затем запустить приложение A, как будто ничего не произошло. Приложение A будет лежать где-то либо на диске в отдельном файле, переименованное во что-то неузнаваемое (и переименовывать в *.exe нельзя), либо как часть приложения B, что предпочтительнее. Есть идеи, как это можно реализовать? И возможно ли это вообще?
Пробовал запускать .NET сборки через System.Reflection.Assembly. Взял пример из MSDN. Попробовал сделать так:
Код C#
Invoke мне радостно сообщает, что у исполняемого метода вывалилось исключение. Опытным путем выяснилось, что исключение это такое: System.InvalidOperationException: до создания первого объекта IWin32Window в приложении необходимо вызвать Application.SetCompatibleTextRenderingDefault.
Что самое интересное, это исключение происходит как раз при вызове Application.SetCompatibleTextRenderingDefault(fals e) в запускаемом приложении!
Что за фигня?
Пробовал запускать .NET сборки через System.Reflection.Assembly. Взял пример из MSDN. Попробовал сделать так:
Код C#
Код:
//читаем сборку из файла
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) в запускаемом приложении!
Что за фигня?