2011-08-05 25 views
5

如果我有5臺目標計算機,並且我要將我的應用程序安裝到其中一臺目標計算機上。我如何防止用戶將我的應用程序複製到其他目標計算機?C#應用程序許可證組件和控件

爲了說清楚,我不希望他們在安裝後複製我的應用程序(他們不應該從安裝的應用程序文件夾複製我的應用程序)。問題是現在我使用Visual Studio 2010安裝和部署安裝和部署我的應用程序,但任何人都可以在安裝後複製我的應用程序文件夾,例如,我的應用程序文件夾(exe,DLL和資源)位於「Program Files/MyApplication」 。他們實際上可以從該文件夾複製我的應用程序並將其粘貼到其他計算機然後使用它。當然,他們可以複製它,但我認爲他們不應該能夠使用我複製的應用程序嗎?有沒有辦法保護他們複製我的應用程序?我必須編寫一個額外的代碼?

我真的是軟件發佈的新手。請指導我必須做的事情。 謝謝

回答

8

您可以使用Rhino Licensing framework來生成許可證文件。它有LicenseGenerator類,它有一個Generate方法。下面是它的樣子:

public string Generate(string name, Guid id, DateTime expirationDate, IDictionary<string, string> attributes, LicenseType licenseType); 

生成方法採用被許可人的名稱。可以生成爲Guid.NewGuid(),過期日期和屬性字典的許可證的唯一標識是可以將許可證文件中存儲自定義鍵值對的地方。

它可以工作的方式是,您可以在許可證中嵌入機器的信息,在驗證階段可以檢查許可證是否屬於同一臺機器。這意味着您不能複製一臺機器的許可證文件並將其放在另一臺機器上,因爲它不起作用。

在可以存儲以下信息的許可文件:

  • 許可證的失效日期
  • 爲其生成許可證的人的姓名
  • 基於系統信息哈希計算
+0

這意味着我必須爲每個部署創建一個許可證以及我的應用程序? –

+0

您第一次需要創建許可證。並且您需要設置到期日期和系統信息。如果任何值被更改或修改,那麼在這種情況下,您又必須爲應用程序生成新的許可證。 –

2

我使用Infralution許可證跟蹤器。它是付費軟件,但允許部分或全部應用程序的許可。它還允許在線驗證的關鍵驗證。可以使用客戶信息生成密鑰,因此註冊使用目標計算機的信息應該是可行的。

http://www.infralution.com/licensing.html

0

當你想它真的很容易,你可以使用LimeLM。 使用試用選項進行簡單的在線驗證。

4

防止用戶在多臺計算機上運行應用程序的行業標準方法的確將您的產品鎖定到該系統的某些參數。但是,您需要考慮以下問題以避免未來的工作或讓客戶不安。不處理這些問題,原油系統已經給定的節點鎖定一個不好的名字,但如果使用得當節點鎖定是不顯眼的,靈活和安全:

  • 您將如何準確地獲得系統參數,你會鎖定至?要求用戶讀/輸入它們是錯誤的常見原因,例如,錯誤地讀取'1'爲'1'或'0'爲'O'。
  • MAC地址通常用於節點鎖定,但這是一個糟糕的選擇,因爲MAC地址可以由管理員在許多操作系統下設置。
  • 假設您將許可證鎖定到系統的多個參數。如果用戶進行小的系統升級,會發生什麼情況,因此導致其中一個更改?如果你的應用突然拒絕運行,他們將不會高興。
  • 用戶需要在某個時間將其許可證移至其他機器。您需要考慮如何支持這一點,而不會使其成爲安全漏洞。
  • 用戶機器將崩潰 - 它發生。他們如何在他們的新/重建系統上再次運行許可證?

只是我們在解決方案中遇到和處理的一些問題。希望這可以幫助。

0

您需要使用機器鎖定/激活的許可證來防止這種情況發生。這確保了許可證只能從一臺機器驗證 - 如果許可證驗證失敗,您可以決定採取何種步驟 - 是否退出應用程序,向用戶顯示消息,允許寬限期等。

嘗試CryptoLicensing,它支持激活/機器鎖定許可證。

免責聲明:我爲CryptoLicensing的開發商LogicNP Software工作。