如何不释放就运行资源中的EXE

dylike 2013-01-20 09:17:43
假设有一个exe程序在工程编写时就添加进了资源,如何在运行时,不释放这个EXE到硬盘即运行它?
...全文
332 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
dylike 2013-01-21
  • 打赏
  • 举报
回复
没有成功,但还是谢谢了。
  • 打赏
  • 举报
回复
引用 8 楼 dylike 的回复:
感谢楼上的代码,很像,但不知为何我运行不起来,总在最后一句报错:参数不匹配。

try

info.Invoke(null, args);
=>
info.Invoke(null, new object[] { args });

http://blog.sina.com.cn/s/blog_5f3ea8140100hma7.html
dylike 2013-01-21
  • 打赏
  • 举报
回复
感谢楼上的代码,很像,但不知为何我运行不起来,总在最后一句报错:参数不匹配。
  • 打赏
  • 举报
回复
你说这个?
 class Program
    {
        static void Main(string[] args)
        {
            byte[] bt = Properties.Resources.内嵌程序连连看;
            MemoryStream mms = new MemoryStream(bt);
            Assembly asm = Assembly.Load(bt);
            MethodInfo info = asm.EntryPoint;
            ParameterInfo[] parameters = info.GetParameters();
            if ((parameters != null) && (parameters.Length > 0))
                info.Invoke(null, args);
            else
                info.Invoke(null, null);
        }
    }
dylike 2013-01-20
  • 打赏
  • 举报
回复
目标EXE不一定是.NET的,之前我试过那几行代码,直接就是将资源中的EXE运行,而不管其是不是.NET编译的,可惜当时没能保存下来.
threenewbee 2013-01-20
  • 打赏
  • 举报
回复
你说的是托管的程序集?
dylike 2013-01-20
  • 打赏
  • 举报
回复
应该没那么复杂,我记得只有几行代码,是直接从程序集加载运行,不知版主能不能帮忙搜索一下,就在C#版块的.
threenewbee 2013-01-20
  • 打赏
  • 举报
回复
你搜索下罗云彬的书,应该有电子版,另外还有本什么windows程序捆绑的书,你找找。
dylike 2013-01-20
  • 打赏
  • 举报
回复
之前我在CSDN上看到过,但搜索了N次再也找不到了.
threenewbee 2013-01-20
  • 打赏
  • 举报
回复
知道thunk吧,和它类似,把代码从资源中装入内存,然后jmp过去就可以了。罗云彬的一本win32汇编程序设计书上甚至给出了通用的例子程序。

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧