2012-04-13 115 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服务器