2011-06-11 64 views
2

我正在使用C#在.NET Framework 3.5中爲我的客戶端開發一個Windows應用程序。 在我的應用程序中不需要任何數據庫。如何在不使用數據庫的情況下保護C#中的Windows應用程序免受盜版侵害?

我想通過在安裝時進行註冊過程來保護我的應用程序,其中用戶將被要求輸入註冊密鑰,註冊密鑰應該是機器相關的,否則用戶可以複製安裝文件夾並分發給其他人,我不想發生。

請給我建議,如何實現這一目標。

感謝, Bibhu

回答

2

我相信你會需要一個註冊服務。

  • 當用戶註冊(他們需要在線),其註冊的「代碼」與他們的計算機的詳細信息/其他標識一起發送到您的註冊服務(用戶名?)。

  • 您的服務驗證此問題&返回一個可由您的應用程序使用其機器詳細信息/標識解密的密鑰。您的服務還會將註冊碼標記爲「已使用」,以便其他人無法通過使用該密鑰來獲取有效密鑰。

  • 應用商店中的註冊表,甚至配置了有效的密鑰。它不適用於其他機器,因爲它是針對機器細節的。

+0

Broaddhurst,如果它是一個從未連接到互聯網的離線應用程序呢? – Coder323 2011-06-11 04:14:02

+0

@ Coder323那你怎麼知道這個註冊碼是否曾被使用?另一種選擇是,您發佈的應用程序的每個副本都固定爲一個註冊碼,但這更難。 – 2011-06-11 04:18:24

+0

安裝後可能會有一些混淆代碼需要註冊嗎?而且我不確定它是否完全有可能通過在線註冊,因爲現在有專業人員可以破解任何產​​品。 – Coder323 2011-06-11 04:32:22

2

我的建議是這樣的方式:

1)你可以在註冊後創建一個系統登錄鍵,在啓動時您的應用程序的檢查這個系統登錄鍵。

2),可以創建一個Web服務(通過局域網或互聯網),並在啓動時檢查,如果這個版本registerd與否

3)創建一個自定義文件,並存儲基於機器和散列值你啓動應用來查看該文件

每3路,不要忘記混淆

+0

您的第1和第3點,做我們必須創建安裝後的自定義方法? – Coder323 2011-06-11 04:15:49

2

沒有辦法保證軟件是安全的。即使通過網絡註冊,也可能使用數據包分析器僞造。在確保軟件安全方面,你所能做的只是讓專業人員稍微不方便,對於不熟悉的人來說很難,對不熟悉的人來說不可能。一般來說,混淆並不是一種很好的保護,因爲有人最終會發現並公佈它。

還要記住的是,更安全,你讓你的程序時,可以使用較少的合法用戶可能會發現它。在可用性,安全性和在安全性被破壞時丟失的價值之間取得平衡是一個很難的平衡。沒有堅實而快速的「正確」途徑來確保某件事。

對於機器相關的信息,您可以收集有關該系統的硬件,哈希它在某種程度上,和存儲一些值,然後在推出該計劃的每一次檢查。這不是簡單的,但它可以很容易地實現一些安全性。

相關問題