我有一个C#项目 - 一个类库 - 它生成一个DLL文件。
从内部来看,此项目运行外部.exe文件。 (使用标准的Process材料,它工作正常。)
但是,我的问题是:如何将外部.exe文件烘焙到项目中,以便最终消费者只接收最终的DLL文件,而不会看到.exe文件本身?
这将使我的客户更快乐,因为他将继续接收一个DLL文件(如前所述,在我需要.exe之前)。
答案 0 :(得分:4)
如果要将其作为外部进程启动,则需要存在于磁盘上。它可以作为资源嵌入到.dll中,并按需提取。
答案 1 :(得分:2)
你最好的选择是让exe embedded resource。
答案 2 :(得分:1)
如果您的客户端在运行时需要.exe,那么您应该更好地确保他拥有.exe的副本。 IMHO ...
PS:
您可以通过将.dll作为资源(作为“特洛伊木马”)嵌入,然后在运行时提取它来“欺骗”客户端。恕我直言,这将是愚蠢的。昂贵。风险很大。
如果您需要.exe,请运送.exe。并明确表示。
如果客户明确拒绝使用.exe - 那么您的实施违反了要求,您需要回到绘图板。
“exe-as-resource”解决方法......是谎言和欺骗。它甚至不是一个非常有效或安全的作弊。
ALSO:
另外请注意,从资源中提取文件时 到磁盘然后在其上执行代码,您可以触发Windows数据 执行预防 - 基本上,Windows会自动尝试 检测某些东西应该是代码还是数据,以及它是否看起来 像数据(资源会),那么它将阻止这些数据 从作为代码执行。
如果您的.NET程序集是,这将成为一个特别棘手的问题 将通过网络而不是本地驱动器使用 - 那里 各种.NET安全配置可能会阻止这种情况 从正常工作。