public void LoadXMLFile()//从XML读取设置的信息 MessageBox.Show(ex.Message);
二。 将C#程序嵌入资源中(C# 调用嵌入资源的EXE文件方法)
1. 我们有一个test.exe的WinForm程序,这是我们要加壳的目标程序。
2. 新建一个WinForm工程,删除Form1,然后新建一个类。如下。 3. 将test.exe 拷贝到该工程目录,作为嵌入式资源。 using System; using System.Windows.Forms; using System.Resources; using System.Reflection; using System.IO; namespace test { static class Program { [STAThread] static void Main(string[] args) { Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream("test.Code.exe"); byte[] bs = new byte[stream.Length]; stream.Read(bs, 0, (int)stream.Length); Assembly asm = Assembly.Load(bs); MethodInfo info = asm.EntryPoint; ParameterInfo[] parameters = info.GetParameters(); if ((parameters != null) && (parameters.Length > 0)) info.Invoke(null, (object[])args); else info.Invoke(null, null); } } } 编译后的程序会自动将资源中的目标文件加载运行。继续发挥一下,我们可以增加启动密码;将目标程序进 --------------------------------------------------------------------------------------------------- Stream streamObj = this.GetType().Assembly.GetManifestResourceStream("Test_ExeInResource.AllTest.exe"); byte[] b = new byte[streamObj.Length]; streamObj.Read(b, 0, b.Length); Assembly a = Assembly.Load(b); Type[] mytypes = a.GetTypes(); BindingFlags flags = (BindingFlags.NonPublic | BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance | BindingFlags.DeclaredOnly); foreach(Type t in mytypes) { MethodInfo[] mi = t.GetMethods(flags); Object obj = Activator.CreateInstance(t); foreach(MethodInfo m in mi) { if (m.Name == "Main") { MainDelegate md = (MainDelegate)Delegate.CreateDelegate(typeof(MainDelegate), m); md.BeginInvoke(null, null); } } } |
C# 读取(嵌入资源文件)
最新推荐文章于 2025-02-11 01:35:17 发布
2010年01月06日 星期三 下午 09:17