2011-12-30 44 views
3

我正在尋找一個解決方案來許可WPF,Silverlight和WP7程序集。有問題的程序集是一個圖表控件,它具有跨平臺使用的單個API。我正在爲用戶可以下載和安裝的每個平臺(WPF,SL,WP7)創建單獨的MSI。這會將程序集註冊到他們的GAC中供開發使用。許可WPF,Silverlight和WP7程序集

我想要做的是確保一個開發許可證僅由單個開發人員使用。它不一定非常安全,僅僅足以阻止黑客即將成爲黑客。理想情況下,涵蓋所有三個平臺的解決方案將是有益的。

我已經有一個跨平臺混淆器,我很滿意。恥辱這不包括許可證!

編輯:其他要求是,我將允許用戶從購買日期下載最多一年的更新,但他們購買的程序集將無限期使用,無論它們是否更新。組件將被重新分發,因此任何許可模型都必須在WPF/SL/WP7平臺上重新分發。

您的建議/意見歡迎。

最好的問候,

+0

這是http://programmers.stackexchange.com更多 – Paparazzi 2011-12-30 23:39:55

+0

它可以移動它嗎?如果我知道如何,我會這樣做,否則只是轉發。問候, – 2011-12-31 09:01:05

+2

Silverlight和WP7沒有內置的組件授權技術,您可能需要考慮與您的客戶一起實施組件使用的其他非技術方式。 – 2012-01-05 19:12:34

回答

1

您的要求發牌的方法「將‘做工作’,並防止低水平許可濫用」我個人建議沒有得到太花哨;也就是說,爲了避免使用網絡激活/維護許可。我的建議與here的方法類似。

  1. 使用上述鏈接中描述的.NET庫之一選擇對稱加密算法。
  2. 使用隨機生成器創建所需的加密密鑰(如果您與我聯繫,我很樂意分享我開發的一段代碼,以便爲任何所需的密鑰大小生成各種隨機字符串/密鑰),還有.NET類通過生成僞隨機數字(RNGCryptoServiceProvider)來幫助您自己完成此操作。
  3. 轉換/'自定義散列'提供一個新的'散列加密密鑰'的關鍵。
  4. 使用此密鑰來生成初始化向量(IV)並加密您的許可證文件。

您現在如何部署應用程序(在許可方面)取決於您。以下兩種方法適用於上述所有三種應用程序類型,並將爲您的每種產品的許可提供一定程度的一致性。上述方法使用兩個文件進行許可。 'ProductKey.myExtension'和'LicenceFile.myOtherExtension'。第一個包含隨機生成的密鑰,將按照與許可證生成器應用程序相同的方式進行「散列」/轉換(您需要一個單獨的(小型)應用程序來「剪切」/創建許可證文件)。第二個是帶有用戶信息,許可證期限等的加密文件。

A.您現在可以爲您的應用程序提供一個安裝包,將您的應用程序安裝到相關目錄(即C:\ Pogram Files等)中,而無需提供許可證文件,在這種情況下,您可以使用許可證安裝程序部署許可證文件。然後可以爲每個使用Environment.SpecialFolder的用戶單獨安裝許可證,以確保每個用戶都擁有自己的許可證(當然,這將假定'管理員'首先爲所有用戶安裝了應用程序,許可證安裝包將以逐個用戶爲基礎運行)。注:我目前不熟悉WP7應用程序和這種情況下的具體情況。

B.第二種方法是讓個人用戶安裝應用程序,並在安裝應用程序時安裝相關的許可證文件。

在廣泛的研究階段後,我已經部署了幾種使用這種方法的WinForm應用程序,它似乎運行良好。我希望這有一些幫助。

+0

欣賞廣泛的答案。我有一半試圖放棄這一點,因爲似乎沒有商業WP7 SL WPF許可模式。告訴我,關於反射/ IL注射,我應該瞭解哪些注意事項?我正在使用一個我很滿意的跨平臺混淆器。關於每個用戶的許可 - 在環境用戶文件夾中安裝許可證文件是一種天才。非常感謝你 – 2012-01-18 13:29:26

+1

嗨安德魯,對不起,在延遲迴到你身邊,這是那些日子之一。在編寫此方法時,您無需涉及「System.Reflection」或「IL Injection」。如果你需要這些東西的幫助,我很高興你給我發電子郵件。您目前使用哪種模糊處理軟件包?我目前正在使用PreEmptive解決方案的'Dotfuscator',這被證明是一個昂貴的選擇! – MoonKnight 2012-01-18 16:21:51

+0

沒問題。我的電子郵件在我的個人資料上,我有興趣談談是的:)關於反射/ IL我的意思是可以用戶反編譯和應用程序,並替換您的代碼來授權它。混淆器很有用,但它們不會掩蓋一切。我使用的是Babelfor.net,我發現它是「在WPF/SL/WP7中」工作的人。此致敬禮 – 2012-01-18 16:36:56