2012-11-22 50 views
0

可能重複:
how can i make my product as a trial version for 30 days?
Implementing a 30 day time trial在Windows中獲取系統時間更改?

我編程試用應用程序,它擁有30天的試用期,

爲了保留30天用戶,我需要檢查系統時間變化,

例如,如果用戶向系統添加兩天日期和時間,它不會損害試用期,並且它將保持30天,通過從DateTime.now減去時間更改

我找到了一種方法閱讀事件日誌,但我需要一個管理權限來執行此操作,而這些操作始終不可用。

有沒有辦法讓這樣的信息不需要管理權限?

+3

您是否考慮使用許可證密鑰製作應用程序「phone home」,而不是依賴系統時間?或者可能使用NTP服務器?另外,您是否考慮過這樣的用戶實際上會購買您的軟件的可能性有多大? (想想你想投入多少努力,而不是實際上在銷售中會產生多少差異。) –

+0

謝謝@JonSkeet,但是我認爲現在一切都準備就緒後,我不能改變架構,但是這個bug。非常感謝:) –

+2

再一次,你認爲由於這個問題你會失去多少銷量?它真的值得花費多少努力? –

回答

0

您可以使用一個數據庫來記錄第一天的日期,並計算第一天後的30個時間跨度,而不是查找系統時間的變化。

因此,當用戶首次打開該應用程序時,你將不得不查詢您的數據庫中添加今天的日期(首次開盤的日期)和今天(首次開盤的日期)後30天

要獲取今天和30天后的日期,請使用DateTime.Now函數 。

 string Today = DateTime.Now.Day + " - " + DateTime.Now.Month + " - " + DateTime.Now.Year; 
     string End = DateTime.Now.AddDays(30).Day + " - " + DateTime.Now.AddDays(30).Month + " - " + DateTime.Now.AddDays(30).Year; 

的缺點上面的方法是,如果用戶開始他在說,2070年應用程序然後他的申請不會過期,直到2070年

因此,它是最好的,如果你得到的日期從在線來源http://www.thetimenow.com/ 而不是從用戶的計算機獲取日期。

-1

您可以嘗試保存剩餘的天數,安裝datetime和上次檢查datetime。確保兩者均已安裝。

當用戶啓動程序

if (lastCheck > DateTime.Now) 
    { 
     lastCheck = DateTime.Now; 
    } 
else 
    { 
     remainingDays = (DateTime.Now - lastCheck).TottalDays; 
    } 

沒有進一步的修改,這將阻止用戶修改時間,當他將追溯到它會減輕他的剩餘時間。你可以用更少的代碼來避免這種情況。 我認爲它相當簡單而高效。

編輯:我可能會誤解這個問題。

我看不出有什麼辦法可以做到這一點,而無需代碼過量。 最重要的是保護您的應用程序免受破解/開銷。如果用戶想玩日期,那就是他們的損失。

如果這是由於應用程序性質而預期的事情,應該在應用程序完成之前處理它。

+1

如果我在安裝之前將系統時間更改爲2020年,該怎麼辦?這會工作嗎? –

+0

DateTime的時間跨度從00:00:00(午夜),0001年1月1日Anno Domini(共同時代)到公元9999年12月31日晚上11:59:59在格里曆中的時間跨度爲A.D.(C.E.)。 它應該沒問題。 –