从字节数组运行.exe

时间:2017-09-09 08:03:38

标签: c#

在我的应用程序中,我试图从其字节数组中运行一个exe,我这样做:

private static void RunFromBytes(byte[] bin)
        {

            Assembly a = Assembly.Load(bin);
            // search for the Entry Point
            MethodInfo method = a.EntryPoint;
            if (method != null)
            {
                // create an istance of the Startup form Main method
                object o = a.CreateInstance(method.Name);
                // invoke the application starting point
                method.Invoke(o, null);
            }
        }

但是,当我尝试这个时,我收到了这个错误:

  

“System.BadImageFormatException”类型的未处理异常   发生在mscorlib.dll

     

其他信息:无法加载文件或程序集'49150字节   从mybbClient加载,Version = 1.0.0.0,Culture = neutral,   PublicKeyToken = null'或其依赖项之一。一次尝试   加载格式不正确的程序。

在这一行:

Assembly a = Assembly.Load(bin);

byte []来自.net应用程序,如果我把它写入磁盘并从那里运行它就可以正常工作。任何帮助,将不胜感激。 感谢。

1 个答案:

答案 0 :(得分:1)

查看documentation此异常,一个常见的可能原因是32位和64位程序集不匹配。确切的措辞是:

  

DLL或可执行文件作为64位程序集加载,但它包含32位功能或资源。

确保没有目标平台不匹配,因为这会阻止正确加载程序集。