2012-08-10 72 views
2

我創建了一個基於Windows的軟件應用程序。不久即將開始生活。意味着我的客戶可以在我的網站上下載後使用它。此外,我還提到我使用的軟件只能使用我提供的密鑰。最初它會是免費試用版。爲只能使用一次的軟件創建一個唯一的密鑰

這裏即時通訊生成35位密鑰及其唯一的一個。意思是一旦用戶要求我輸入密鑰,並且我向他/她發送了密鑰,他/她就可以使用我的應用程序。但真正的問題出現在這裏。

我希望代碼只能使用一次。例如:如果我的應用程序是由用戶下載的,他可以使用密鑰來使用我的應用程序,但是其他任何人都不能使用相同的密鑰。讓我們假設我的密鑰是xxx,相同的代碼xxx不應該用於任何其他下載了我的應用程序的人。只是爲了讓軟件只能由真正的用戶使用。

我也通過這個環節

http://social.msdn.microsoft.com/Forums/zh/winformssetup/thread/301913a0-ecf9-4095-8d66-a3f4baeea6eb

了丹尼·斯坦頓

我還沒有滿足我的要求。

首先,我想獲得註冊人下載我的應用程序的IP地址,並基於該限制,我可以限制我的密鑰只能由其IP地址將存儲在我的數據庫中的人使用。但我認爲這將是錯誤/不必要的過程。並且爲了使用我的應用程序,人員網絡電纜應該每次插入。但它不能解決我的目的。

其次,我想創建一個應用程序ping到我的服務器或我的過程。像最初當用戶運行應用程序時(在線或離線),應用程序應該可以工作,但只要他將網絡電纜/插頭連接到網絡,應該向我的服務器或我提供警報。從我這邊我可以檢查用戶是否使用我提供給他的鑰匙。如果無論如何用戶不是真的,我應該能夠阻止他再次使用我的應用程序。從我身邊,我決定將鑰匙存儲在我提供的數據庫中。並且每個請求的密鑰在另一個表中。林不知道我是否正確。但截至目前,這是我腦海中的事情。

但總而言之,最終我希望只有一個用戶使用密鑰。只是爲了避免一百萬個不同的用戶使用我的應用程序與一個密鑰。

林不知道我提供的任何想法。

現在有沒有辦法實現這一目標?

+0

爲什麼不使用guid?它的不確定性,並不會產生相同的結果 – 2012-08-10 11:32:42

+0

我第二。每個用戶生成的Guid將始終是唯一的。存儲IP對此沒有意義,因爲每次用戶登錄網絡時,這取決於提供商,可能會有所不同。即使公司擁有固定IP,您也無法區分幾個用戶組成同一家公司。 – 2012-08-10 11:40:50

+0

@Mutu Yolbulan:我想要的是做一些事情,以防止許多人使用一個密鑰來訪問我的應用程序。我不知道該怎麼做。我創建了一個生成唯一代碼的不同應用程序,因此創建唯一密鑰不是我的問題。所有我想到的是,相同的密鑰不應該被使用一次以上。例如:如果密鑰是「xxx」,並且用戶只下載了我的應用程序,他可以使用我的應用程序使用密鑰。相同的密鑰「xxx」不應該被其他人使用。希望你瞭解我的查詢。我試圖具體。 – Vikneshwar 2012-08-10 11:51:20

回答

3

獲取他機器的硬件指紋並根據它生成密鑰。您的軟件應該檢查​​是否爲特定機器生成了密鑰。 但是,這需要在線激活您的軟件。您可以通過兩種方式執行此操作:

  • 讓用戶啓動未激活的應用程序並顯示他發送給您的硬件指紋。您然後返回他進入的激活密鑰。
  • 您的應用程序會自動連接到激活服務,併發送指紋,接收激活密鑰並將其存儲

還有一點應該包含有關硬件的幾個組件的信息,並允許用戶更改一個或幾個。例如。需要指定硬盤序列號,MAC地址,主板序列號和一些CPU信息(例如系列名稱),您應允許用戶升級或添加另一個硬盤。

還有關於getting hardware information的SO話題。

0

你必須做出一個選擇,我認爲你的關鍵系統會越強,對用戶來說越難。

IE:一個好的系統是產生一個硬件密鑰,所以它只被安裝在已註冊的計算機上。雖然它運行良好,但購買新計算機的用戶可能會遇到麻煩,要求您註冊新的硬件密鑰。

如果你只給他們一個密鑰(如序列號),它可能很容易在另一臺計算機上使用它。所以基本上,如果你不認爲很多用戶會放棄他們的密鑰,因爲軟件不會被很多人使用,我不會得到一個「超強」的硬件認證。

另外,不要註冊一個IP地址,每個擁有動態IP的人都會恨你這樣做。