1

重複の可能性:
*.exe を dll に埋め込んだ

DLL ファイルを生成する C# プロジェクト (クラス ライブラリ) があります。

このプロジェクトは、内部から外部の .exe ファイルを実行します。(標準の Process を使用すると、正常に動作します。)

しかし、私の質問は次のとおりです。最終消費者が最終的な DLL ファイルのみを受け取り、.exe ファイル自体を見ないように、外部の .exe ファイルをプロジェクトに焼き付けるにはどうすればよいですか?

これにより、クライアントは 1 つの DLL ファイルを引き続き受け取ることができるため、クライアントは満足することになります (.exe が必要になる前と同様)。

4

3 に答える 3

4

外部プロセスとして起動する場合は、ディスク上に存在する必要があります。リソースとして .dll に埋め込んで、オンデマンドで抽出することができます。

于 2012-06-17T16:37:00.757 に答える
2

あなたの最善の策は、exeを埋め込みリソースにすることです。

于 2012-06-17T16:37:06.430 に答える
1

クライアントが実行時に .exe を必要とする場合は、クライアントが .exe のコピーを持っていることを確認したほうがよいでしょう。私見では...

PS:

.dll をリソースとして (「トロイの木馬」として) 埋め込み、実行時に抽出することで、クライアントを「騙す」ことができます。これは、私見、ばかげているでしょう。高い。そして危険です。

.exe が必要な場合は、.exe を出荷してください。そして、それについて明確にしてください。

クライアントが明示的に .exe を拒否する場合、実装は要件に違反しているため、最初からやり直す必要があります。

「exe-as-resource」の回避策は...嘘でチートです。そして、それは非常に効率的でも安全でもありません。

また:

*.exe を dll に埋め込んだ

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

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

于 2012-06-17T16:36:57.247 に答える