.NET 程序限时使用 高手帮忙分析一下!~

来源:百度知道 编辑:UC知道 时间:2024/05/18 03:36:07
写了一个练手的小东东,现在想加入这样的功能:

限制使用1个月的时间(不需要有续约的功能,就是一个月后不能用,因为自己想了解这方面的技术,并不是赚钱,就是玩玩儿.呵呵)

计时是从程序安装的那一刻开始.

最好不利用注册表或数据库(因为有权限就都可以改,最好是能在程序里写"死"它) 如何才能做到上面的功能呢?
呵呵,感谢这么多朋友出谋献策.

我设想这样:
const DateTime Date = New DateTime(2008,5,30) //这是过期时间,我在程序里写死了且它是常量,这样可以保证,初始化后用户不能改变它的值了.

然后在Form_Load事件中:
if (DateTime.Now() > Date)
{
this.close();
}

这样,各位觉得呢?

但同时又存在一个问题,他可以修改系统时间.郁闷......

又或者:

因为到期时间是5月30日.为了防止他把系统时间改小.

我可以在Load事件中:
const DateTime NowDate = DateTime.Now();
if (NowDate > Date || NowDate.Year < Date.Year || NowDate.Month < Date.Month)
{
this.close();
}

呵呵,用程序自己限制自己,我当然知道这是比较笨的方法.
我只是想看看,如果程序本身用限制功能的话,怎样才能做到最好的效果.

用配置文件或注册表或数据库的话,做起来就太容易了(针对普通用户,高级用户,再难他也可以给你破了).

我发现,往往用我说的这个问题的方式做好防护工作,倒是一个挑战......

楼主提出的问题真的不太好解决,即使配置文件写入一些东西,并且加密,当重新安装程序后,配置文件又重新开始记时。现在有一些软件限制使用次数或者时间,就是写入注册表,或者有些需要网络通信的软件,它把你机器的一些硬件信息(比如网卡号)写入到软件发布者的服务器数据库中,这些信息是你没法更改的,就算重装系统,服务器照样知道你是哪台机器。想本地实现限时功能,总是会有办法破解的。

我感觉有两种方法,一个就是在第一次使用的时候生成一个配置文件,当然是加密的,如果配置文件丢失或被更改,你就认为他过期。

另一种方法就是更改你程序身本的资源文件,根据它来判断

上两楼还是不对,
资源文件是不能被修改的;
文件的三个时间,是能被篡改的;
即使上两条都可行,重新安装一遍,还是又能用了。
-----
真的有人能做到楼主提的吗?

可以读取程序文件创建或修改的时间,之后每次读取系统时间,如果两个时间差为一个月,就过期了。