2017-10-09 107 views
0

我已经试过这在使用“包装”或“执行代理”不同的EXE的上下文中运行可执行

byte[] bytes = File.ReadAllBytes("Program.exe"); 
Assembly assembly = Assembly.Load(bytes); 
assembly.EntryPoint.Invoke(null, new object[0]); 

编译好了,但是当我运行它,它说

“计划没有水库......”

什么我尝试待办事项在exeproxy.exe 还莫名其妙的上下文中运行一个DLL没有管理员,如果这可能是一个功能某种程度上,这将是巨大的。使用以下

using System; 
using System.IO; 
using System.Reflection; 

namespace exeproxy 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      if (args.Length == 0) 
      { 
       Console.WriteLine("Usage: exeproxy <exe>"); 
       Environment.Exit(1); 
      } 
      string exe = args['0']; 
      byte[] bytes = File.ReadAllBytes(exe); 
      Assembly assembly = Assembly.Load(bytes); 
      assembly.EntryPoint.Invoke(null, new object[] { new string[0] }); 
     } 
    } 
} 

有用的链接 http://www.c-sharpcorner.com/UploadFile/ajyadav123/executing-assembly-code-in-C-Sharp/

IM改变代码的Visual C++

林这可能会使使用C++或VC++看链接asm()更有意义。 您可以使用Calc.exe来测试它是否有效;它不是关于运行.net程序。

+0

我已经删除了汇编标签,因为它的语言不是.net汇编 –

+1

@PawełŁukasik:有一个'.net-assembly'标签可以使用。 –

+0

@MichaelPetch thx,下次还会添加 –

回答

0

您应该更改将参数传递给EntryPoint的方式。要调用的第二个参数是一个对象数组,它被解析为Main的参数。但是Main需要一串字符串。所以你的电话应该是这样的:

assembly.EntryPoint.Invoke(null, new object[] { new string[0] }); 

它与一个简单的程序打印到控制台。如果程序更复杂,可能会有更多问题需要处理。

+0

对于一个带gui的程序有什么问题? – Some0ne03370

+0

好吧,我可以看到你已经使用它。正如我所说 - 如果你编程挂起它可能是Program.exe正在做的原因。我们不知道里面有什么。 –

+0

,因为这似乎是很难的一些程序,我已经做了一个github它https://github.com/OfficialNoob/exeproxy – Some0ne03370

相关问题