2012-02-02 50 views
1

我正在試圖製作一個基本上允許我在安裝中推送DLL的系統,以及一些exe文件中的代碼,這些代碼允許我將所有未來的程序作爲beta版本發佈一段時間。確認系統時間

現在的問題是,如果我想這樣做,我需要選擇,直到程序有效。這很好,除了通過更改系統時鐘,您可以輕鬆繞過系統。

現在,我想聽聽人們通常爲這樣的事情做些什麼。 我一直在嘗試一些方法,如聯繫一個網站給出時間戳,並比較,如果它不會總是增加超過9000 的程序開始時間並且事實上人們不會如果他們沒有連接到互聯網,就可以使用它。

任何建議,非常感謝。

回答

2

這不是100%保證解決方案,但它會帶你那裏

您將需要實現在配置文件中的這些事情(爲什麼配置文件,因爲如果用戶將其刪除您的應用程序將無法運行)。還要加密所有以下數據。

  • 存儲運行應用程序的日期和時間。
  • 存儲應用程序運行的確切時間量。

這樣就可以避免:

  • 如果用戶更改計算機的時間,你會知道,因爲你的應用程序是登錄的日期和時間,它可能會重疊時間還早,說用戶在月份的第6和第10天運行應用程序,然後他將日期恢復到第7天,您將會了解它。
  • 其次,用戶可以將每次運行的日期更改爲單一日期,在這種情況下,使用的總時間將對您有所幫助。假設用戶每次運行日期設置爲月份的第一個月,在這種情況下,他只能使用24小時的應用程序,但不能超過此值。

  • 從外部服務器檢查其它選項(缺陷:要求互聯網接入)
  • 貯藏時間註冊表(缺陷:用戶可以很容易地操縱註冊表)

希望這可以幫助你。

+0

通過以加密方式存儲註冊表中的存儲時間可以是「無缺陷的」 – Max 2012-02-02 08:19:44

+1

但是,用戶可以監視註冊表,並可以刪除條目。在這種情況下,程序會認爲它是第一次運行。 – 2012-02-02 08:21:50

+0

你是絕對正確的......但知道如何監視註冊表的計算機用戶數量很小......這取決於使用該軟件的人的類型......他們是普通人嗎?工程師?他們是軟件開發者嗎? – Max 2012-02-02 08:31:12

0

如果您的軟件可以訪問某些本地服務器/ nas上的某個網絡共享,則可以在此網絡共享上創建一個新文件,並且該文件的創建時間將使用服務器/ nas的時鐘設置,因此您可以將服務器/ nas上設置的時間與本地計算機的時間進行比較。

或者您還可以在上次執行的最後一次保存某處(註冊表中的文件在數據庫中),並且如果時鐘返回,則可以鎖定該應用程序並需要進一步的幫助: - )