web-dev-qa-db-ja.com

C#の埋め込みリソースとしてExeファイルを実行する

サードパーティのEXEがあります。これをC#アプリケーションから実行するだけです。

私の主なターゲットは、C#ファイルから実行可能なサードパーティの著作権です。

これを行うより良い方法はありますか?

これどうやってするの ?

ありがとうございました
メナカ

15
menakacol
  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);
        }    
    </ code>

  5. プロセスを使用して新しい実行可能ファイルを実行する

19
ljh

ソリューションエクスプローラーでプロジェクトを右クリックし、ダイアログボックスで既存の項目選択実行可能ファイルを追加してから、exeパスに移動して、プロジェクトにexeを追加します。ボタンクリックイベントでexeを開始する場合は、このコードを簡単に記述します簡単...

private void button_Click(object sender, EventArgs e)
        {
            System.Diagnostics.Process.Start("fire.EXE");
        }
1
EAGLEONE

もっと簡単に書けます

 private void ExtractResource(string resName、string fName)
 {
 object ob = Properties.Resources.ResourceManager.GetObject(resName、originalCulture); 
 byte [] myResBytes =(byte [])ob; 
 using(FileStream fsDst = new FileStream(fName、FileMode.CreateNew、FileAccess.Write))
 {
 byte [] bytes = myResBytes ; 
 fsDst.Write(bytes、0、bytes.Length); 
 fsDst.Close(); 
 fsDst.Dispose(); 
} 
} 
1
alikhil