将外部.exe添加到C#项目中

时间:2012-06-17 16:32:17

标签: c#

  

可能重复:
  Embedded a *.exe into a dll

我有一个C#项目 - 一个类库 - 它生成一个DLL文件。

从内部来看,此项目运行外部.exe文件。 (使用标准的Process材料,它工作正常。)

但是,我的问题是:如何将外部.exe文件烘焙到项目中,以便最终消费者只接收最终的DLL文件,而不会看到.exe文件本身?

这将使我的客户更快乐,因为他将继续接收一个DLL文件(如前所述,在我需要.exe之前)。

3 个答案:

答案 0 :(得分:4)

如果要将其作为外部进程启动,则需要存在于磁盘上。它可以作为资源嵌入到.dll中,并按需提取。

答案 1 :(得分:2)

你最好的选择是让exe embedded resource

答案 2 :(得分:1)

如果您的客户端在运行时需要.exe,那么您应该更好地确保他拥有.exe的副本。 IMHO ...

PS:

您可以通过将.dll作为资源(作为“特洛伊木马”)嵌入,然后在运行时提取它来“欺骗”客户端。恕我直言,这将是愚蠢的。昂贵。风险很大。

如果您需要.exe,请运送.exe。并明确表示。

如果客户明确拒绝使用.exe - 那么您的实施违反了要求,您需要回到绘图板。

“exe-as-resource”解决方法......是谎言和欺骗。它甚至不是一个非常有效或安全的作弊。

ALSO:

  

Embedded a *.exe into a dll

     

另外请注意,从资源中提取文件时   到磁盘然后在其上执行代码,您可以触发Windows数据   执行预防 - 基本上,Windows会自动尝试   检测某些东西应该是代码还是数据,以及它是否看起来   像数据(资源会),那么它将阻止这些数据   从作为代码执行。

     

如果您的.NET程序集是,这将成为一个特别棘手的问题   将通过网络而不是本地驱动器使用 - 那里   各种.NET安全配置可能会阻止这种情况   从正常工作。