2012-04-13 110 views
4

如果我使用DateTime.Now作爲軟件授權認證的一部分來強制執行軟件可以使用的天數,可以通過簡單地更改系統時鐘來避免這種情況嗎?DateTime.Now是否受更改系統時鐘影響?

如果有,還有更好的方法來獲得真正的UTC時間嗎?

+10

會在哪裏'DateTime.Now'從系統時鐘得到它的值,如果不呢? – 2012-04-13 20:29:24

+1

你有用戶上網嗎? – ertan 2012-04-13 20:29:49

+0

@KirkWoll - bios?通過系統時鐘,我的意思是用戶可以在任務欄右下方更改的日曆。 – 2012-04-13 20:33:57

回答

9

如果我用DateTime.Now軟件許可認證的一部分 執行的數量天軟件可以使用,可以通過簡單地更改系統時鐘來避免這種情況嗎?

DateTime.Now使用系統時鐘,所以是的,它可以繞過。

如果有,還有更好的方法來獲得準確的系統時間嗎?

是的,你可以通過www查詢時間服務器。但是你知道,即使這可能會被繞過,因爲用戶可以修改他的主機文件,並用自己的代理替換你正在使用的地址,並返回他喜歡的任何時間。所以這一切都取決於你想要保護你的軟件有多遠。如果您真的關心軟件的知識產權,您最好購買商業授權軟件。

+0

但WWW響應可能被劫持,所以錯誤的響應可能會返回 – sll 2012-04-13 20:31:03

+2

@sll您可以用服務私鑰簽署時間,以便它不能僞造。 – Servy 2012-04-13 20:38:51

+0

@Servy:私鑰可以從你的程序的可執行文件/ dll中提取出來並重復使用 – sll 2012-04-13 20:40:34

5

每次我已經使用這個方法來測試它已經影響到這一點,所以答案是肯定的,它會影響它

+2

+1爲誠實和學習一個寶貴的教訓:) – leppie 2012-04-13 20:31:37

3

當然,DateTime.Now從系統時鐘獲取它的值。
更好的方法是在Internet上使用NTP服務器。

this article CodeProject上,你可以找到的代碼,允許客戶端連接到NTP服務器