7

誰かがexeファイルをdllに埋め込む方法を知っていますか?

私はc#コードから呼び出すexeファイルであるツールを持っています。

問題は、このツール(exeファイル)を含む1つのdllと、c#コードを含むdllが必要なことです。

このexeファイルをリソースに埋め込むことは可能ですか?

事前にThx

4

5 に答える 5

9

もちろんそうだ。リソースとしてアプリケーションにRC_DATAとして任意のファイルを追加できます。ただし、呼び出す前に、まずディスクに解凍する必要があると思います。

使用しているIDE/言語はどれですか?

[編集]

ごめん!あなたはC#を使用していると述べました。

  1. アプリケーションにリソースファイルを追加します(IDEでアプリケーションを右クリックし、[新しいアイテムの追加]を選択します。
  2. リソースエディタのツールバーを使用して、既存のファイルを追加します。
  3. 次に、次のようなコードを呼び出して、必要に応じてexeを抽出します。System.IO.File.WriteAllBytes(@ "C:\ MyEXE \"、Resource1.MyEXE);
于 2009-02-21T14:28:19.523 に答える
7

あなたの使用はあなたがこれをすることにあまり満足していないかもしれないことを心に留めておく価値があります。制御できない実行可能ファイルを、抽出して実行するDLLに埋め込むと、おそらく人々は自分のマシンでトロイの木馬を実行することを心配するでしょう。

ファイルシステムに.EXEを残し、アプリケーションの動作について透過的にすることをお勧めします。

于 2009-02-21T14:35:51.487 に答える
2

アセンブリは byte[] からロードできます。これは、埋め込みリソースの ManifestResourceStream を介して取得できます。

于 2009-02-21T15:08:07.150 に答える
1

別の方法として、.exe 自体を埋め込むのではなく、その機能を dll に含め、rundll32[ 1 ] を使用して実行することもできます。

于 2009-02-23T16:21:23.307 に答える
-1

余談ですが、ファイルをリソースからディスクにプルしてその上でコードを実行すると、Windowsデータ実行防止がトリガーされる可能性があることに注意してください。基本的に、Windows は何かがコードまたはデータであるかどうかを自動的に検出しようとします。データのように見える場合 (リソースの場合)、そのデータがコードとして実行されるのを防ぎます。

.NET アセンブリがローカル ドライブからではなくネットワーク経由で使用される場合、これは特に厄介な問題になります。さまざまな .NET セキュリティ構成があり、これが正しく機能しない可能性があります。

もう 1 つのオプションは、プロジェクトの詳細がわからない場合は、これを一粒の塩で取ります。インストールに .exe.readme ファイルを追加して、好奇心旺盛なユーザーや IT 担当者に予期していなかった実行可能ファイルがある理由を説明します。インストールディレクトリ:)

于 2009-02-23T16:57:27.310 に答える