2012-04-02 53 views
4

使用:ayende rhino licensing構建一個小型winforms應用程序。許可證工作正常,我可以創建許可證並按照我的選擇分發它們。特定於計算機的Winforms許可

問題是,如何讓每個許可證只在一臺機器上工作?我知道ayende的項目中有一個名爲LicensingService的類,我相信這個類可以做我想做的事情,但我只是無法弄清楚。我做了相當多的搜索,並且找不到除this one之外的任何教程。

也許有人已經實現了這一點,或者有一些關於如何完成這一任務的提示?如果有幫助,我可以訪問網絡服務器。

任何幫助一如既往,非常感謝。

回答

1

取決於你想要怎麼討厭,使之成爲你的用戶是誠實的。您可以實現一個HWID(請參閱How to fast get Hardware-ID in C#?關於如何生成它們),這些HWID在系統間是唯一的,然後讓程序檢查HWID是否與在線存儲的HWID相匹配(通常通過使用數據庫)。

不用說,這將使您的應用程序需要互聯網連接才能運行,這可能會讓您的用戶感到沮喪。

或者你可以合併HWID和序列號,並讓你的應用程序執行相同的操作來驗證它們是否匹配,但這很容易被普通黑客破解。

在這一天結束時,就安全性而言,.net並不是最好的,因爲您可以根據需要輕鬆獲取源代碼並修改程序集以修補某些保護措施。在決定要採取什麼路線來保護軟件時請記住這一點。

+0

感謝您的回覆,這聽起來像個好主意。我會試一試,我意識到.net並不是最好的安全軟件,但我只想阻止用戶將應用程序從機器複製到機器,並且它仍然可以正常工作。再次感謝。 – JDx 2012-04-02 12:16:06

1

我不知道什麼是犀牛牌。爲了解決您的需求,通常有兩種方法。

  1. 將一些隨機生成的密碼提供給客戶機,並在服務器中維護一個密碼池。每次輸入密碼在本地機器上註冊應用程序時,都要通過互聯網連接到您的服務器來檢查它是否已在其他地方註冊。

  2. 或者,我們要做的是,生成一個對該機器唯一的代碼(也許是一些獨特的機器ID,例如MAC ID),並讓客戶端發送給您。然後您將重新編碼代碼並使用some logic發回。現在,當客戶端將代碼輸入到他的機器時,執行相同的操作:獲取機器ID,使用相同的some logic執行相同的重新哈希,並檢查它是否匹配。

我想不出別的

+0

感謝您的回覆。數字1聽起來像是這個特定應用程序的最佳解決方案,我打算將它與denied66的答案結合使用。 – JDx 2012-04-02 12:16:51

+1

@JDx我想你錯過了這一點。 denied66接受的答案與我的第二個選項相同。你如何使用選項1和2來解決你的問題? – nawfal 2012-04-02 12:35:19