2011-06-10 85 views
2

我正在研究一個c#應用程序,該應用程序在用戶安裝應用程序並第一次運行應用程序時被串行加密,我詢問用戶密鑰以及他是否輸入了正確的密鑰。我運行該應用程序。但我的要求,這個過程應該是安裝後的一次, 我認爲有兩種可能性。在一個變量在C中存儲變量的狀態#

  1. Store軟件驗證狀態,並用它允許應用程序的運行(我不希望使用XML,對象序列化,因爲我要救一個變量的狀態也用戶可以刪除創建的文件通過序列化)。

  2. 詢問用戶對鍵的同時,他正在安裝應用程序,如果他輸錯鍵,然後他不應該是能夠安裝軟件。

可以將某些身體答案

  1. 是否有存儲單個變量的狀態的簡單方法。

或 2.如何手動觸發安裝程序(驗證後)。

回答

2

對於這樣的事情,我會加密它並將其存儲在註冊表中。這不是他們想要存儲在設置文件中的那種類型。您可以查看this codeproject關於如何使用C#訪問註冊表的文章。

5

Software Protection是一個古老而廣泛的話題。目前的技術狀況是,保護軟件不可能100%可靠。遲早,有人會破解它,給予足夠的曝光和/或興趣。

儘管如此,很多人和公司保護自己的軟件產品,並有許多的方式來這(不是100%可靠不過)。

從您的問題中不清楚您的要求是什麼。根據你所描述的,最簡單的選擇是使用密碼壓縮安裝程序。如果用戶不知道正確的密碼,他們將無法解壓zip文件並安裝程序。

這通常不太實際,因爲每個人都提供相同的密碼。你想要做你自己的序列密鑰驗證,並且你正在考慮在安裝的時候這樣做。如果這是你想要的路線,你需要提供一些腳本來驗證你的安裝系統。您指出,您正在使用Windows安裝程序。您可以使用Windows Installer XML (WiX) toolset來編寫安裝。如果有足夠的耐心,可以將密鑰驗證構建到Windows安裝程序包中。最可行的方法是從wix包中調用您在c#中編寫的驗證例程。您可以使用Conditional Syntax檢查安裝中的條件。這應包括您選擇2

至於選項1,那麼只要在系統中存儲您的信息塊,用戶隨時可以到那裏,並改變它(這畢竟是自己的電腦)。有些人將其存儲在註冊表中,有些存儲在密鑰文件中。刪除這些文件通常不是問題,因爲如果用戶刪除它們,程序就會知道它不應該運行。然而,用戶將能夠將它們複製其他機器上,等

Isolated Storage尚未儲存您使用.NET信息另一個地方。無論如何,最終它都是文件系統中深埋的文件。

軟件保護再次是一個複雜的話題,由您來決定,您的要求是什麼,您可以承受的妥協以及您選擇實施的內容。

祝你好運!