17

我有一个第 3 方 EXE。我只需要从我的 C# 应用程序中运行它。

我的主要目标是从我的 C# 文件中为第 3 方可执行文件提供版权。

有没有更好的方法来做到这一点。?

我怎样才能做到这一点 ?

4

3 回答 3

23
  1. 首先将嵌入的可执行文件作为资源文件添加到您现有的资源文件中,如果您没有,则需要[将现有项添加到您的项目,并选择资源文件]
  2. 在资源编辑器页面添加可执行文件时,选择类型为[Files],然后找到嵌入的可执行文件并添加。例如名为“subexe.exe”的文件,则资源设计cs文件将添加以下代码:
    internal static byte[] SubExe {
            get {
                object obj = ResourceManager.GetObject("SubExe", resourceCulture);
                return ((byte[])(obj));
            }
        }
    
  3. 添加一个方法来访问你的资源,这也很简单,只需在你的资源设计器cs文件中添加以下代码

    
    public static byte[] GetSubExe()
        {
            return SubExe;
        }
    

  4. 在您的主要可执行源代码中,添加以下内容以读取资源并将其写入新文件

    
    string tempExeName = Path.Combine(Directory.GetCurrentDirectory(), "A3E5.exe");

        using(FileStream fsDst = new FileStream(tempExeName,FileMode.CreateNew,FileAccess.Write))
        {
            byte[] bytes = Resource1.GetSubExe();
    
            fsDst.Write(bytes, 0, bytes.Length);
        }    
    

  5. 使用进程运行新的可执行文件

于 2013-03-18T05:30:22.897 回答
1

可以写一个更简单的

私有无效提取资源(字符串 resName,字符串 fName)
 {
      对象 ob = Properties.Resources.ResourceManager.GetObject(resName, originalCulture);
      byte[] myResBytes = (byte[])ob;
      使用 (FileStream fsDst = new FileStream(fName, FileMode.CreateNew, FileAccess.Write))
      {
         字节 [] 字节 = myResBytes;
         fsDst.Write(bytes, 0, bytes.Length);
         fsDst.Close();
         fsDst.Dispose();
      }
}
于 2014-07-31T16:44:19.897 回答
0

右键单击您的项目解决方案资源管理器然后添加现有项目在对话框中选择可执行文件然后转到您的exe路径并将您的exe添加到您的项目中..然后如果您想在按钮单击事件上启动您的exe然后编写此代码很简单简单的 ...

private void button_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start("fire.EXE");
        }
于 2013-09-02T18:26:11.500 回答