0

我尝试制作我们软件的试用版。但我无法正确地做到这一点。当我系统中的时钟更改时,它不工作。

SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy");
Calendar expiredate = Calendar.getInstance();

try {
    Date date = sdf.parse("24/06/2015");
    expiredate.setTime(date);
    if (Calendar.getInstance().after(expiredate)) {
        JOptionPane.showMessageDialog(null, "Sorry your software has expired", "Expire",
            JOptionPane.INFORMATION_MESSAGE);
        System.exit(0);
    }
 } catch(ParseException e) {
    // ...
 }
4

2 回答 2

5

您必须决定要花费多少精力。如果您的应用程序在客户端系统上运行(意思是:它不需要连接到中央服务器)......那么您的选择非常有限。

当然,您的应用程序可以保存日期/时间戳……但是当人们开始篡改系统时钟时,这将无济于事。

长话短说:您应该在“易于实施;但可能很容易规避”和“难以实施;因此很容易出错”之间取得平衡。换句话说:请记住,此类“许可证检查功能”可能会使您的潜在客户难以使用该软件。或者“更糟”:你花了很多时间来解决这个问题的一些“伟大的安全解决方案”,并且在实施它的同时,你在你的软件中添加了各种错误。不要低估提出一个有动力的用户无法破解的解决方案所需的努力......

最终建议;尝试不同的方法:专注于为您的应用程序创建出色的用户体验(但可能具有受限的功能集)。只需让您的客户相信您的应用程序值得花钱购买即可;并且不提供“试用许可证”;但是一个免费的“试用版”,其功能比真正的产品少。

于 2015-06-24T10:17:10.803 回答
1

$sql ='SELECT * FROM finsys.user WHERE username= "$user" AND password = "$pass" AND now() <= "20-Dec" ';

如果是,从数据库中删除用户记录..

客户不会因为时间推移而更改系统日期更改。如果他们显示试用结束消息,那么他们可能会更改系统日期。

不要提供任何试用消息.. 提供消息为“用户身份验证失败”.. 他们将无法知道为什么会发生这种情况;在那个数据库改变之前..

于 2016-11-01T15:27:51.307 回答