17

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

私の主な目標は、C# ファイルからサードパーティの実行可能ファイルを著作権で保護することです..

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

これどうやってするの ?

4

3 に答える 3

23
  1. まず、埋め込まれた実行可能ファイルをリソース ファイルとして既存のリソース ファイルに追加します。ない場合は、[既存の項目をプロジェクトに追加し、リソース ファイルを選択する] 必要があります。
  2. リソース エディタ ページで実行可能ファイルを追加するときは、タイプを [ファイル] として選択し、埋め込まれた実行可能ファイルを見つけて追加します。たとえば、「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

もっと簡単に書くことができます

private void ExtractResource(string resName, string fName)
 {
      object ob = Properties.Resources.ResourceManager.GetObject(resName, originalCulture);
      バイト[] myResBytes = (バイト[])ob;
      using (FileStream fsDst = new FileStream(fName, FileMode.CreateNew, FileAccess.Write))
      {
         byte[] バイト = myResBytes;
         fsDst.Write(バイト、0、バイト.長さ);
         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 に答える