2012-06-17 28 views
1

可能重複:
Embedded a *.exe into a dll烘烤外部.exe文件到C#項目

我有一個C#項目 - 一個類庫 - 產生一個DLL文件。

該項目從內部運行一個外部.exe文件。 (使用標準的過程的東西,它工作正常。)

但是,我的問題是:如何將外部.exe文件烘烤到項目中,使最終用戶將只接收最終的DLL文件,沒有看到.exe文件本身?

這會讓我的客戶更開心,因爲他會繼續接收一個DLL文件(和以前一樣,在我需要.exe之前)。

回答

1

如果你的客戶端在運行時需要.exe,你最好確保他有一個.exe的副本。恕我直言...

PS:

可以「欺騙」通過嵌入您的.dll作爲一種資源的客戶端(如一個「特洛伊木馬」),然後在運行時提取它。恕我直言,這將是愚蠢的。昂貴。風險很大。

如果您需要.exe,運送.exe。並明確表示它。

如果客戶明確拒絕使用.exe,那麼您的實施違反了要求,您需要返回到繪圖板。

「exe-as-resource」解決方法......是謊言和騙子。它甚至不是一個非常有效或安全的作弊。

ALSO:

Embedded a *.exe into a dll

在一個側面說明,請記住,當你從你的資源 到磁盤上拉一個文件,然後在其上執行代碼,您可能會觸發Windows數據 執行保護 - 基本上,Windows會嘗試自動檢測是否應該是代碼或數據,並且如果它看起來像數據(資源會),那麼它會阻止數據 作爲代碼執行。

這成爲一個特別艱難的問題,如果你的.NET程序集是 會在網絡上,而不是從本地驅動器中使用 - 有 有可能會阻止該 正常工作.NET安全配置的種種。

4

如果您打算將它作爲外部進程啓動,它需要存在磁盤上。它可以作爲資源嵌入到.dll中並按需提取。

+0

當然,這絕對是瘋狂。 – paulsm4

+0

我不是在提倡它,只是確定約束和可能的解決方案。 – bmm6o

+0

本着這種精神,你100%正確。感謝您的積極貢獻。真誠。保羅 – paulsm4