5

我做了一个演示小程序,我想交付给我的客户,以便他可以运行它 5 次来检查它的功能。它不是一个大型软件,我为其实现了一些序列密钥功能并制作了试用软件。

我想要一个简单的解决方案,它可以限制程序的使用超过 5 次,或者可以在其阈值限制后自行删除。

我想到了一个解决方案。我通过同一个程序制作了 4 个 .txt 文件并将它们存储在 diff 中。客户端计算机上的位置,这些文件将存储程序运行的次数。每次应用程序启动时,它都会检查所有这些文件,如果任何文件包含表示阈值限制的数字,它会简单地退出并说已达到阈值限制。

是否有任何其他更好但简单的解决方案来限制客户端多次使用它?

如果程序在其阈值限制后被删除,那就更好了。

4

7 回答 7

7

如果您想让它变得更简单,请进行时间检查,并且在从今天起五天或一周后时间到期时不允许客户端运行代码

你可以试试下面的片段

Calendar expiry = Calendar.getInstance();
expiry.set(2010, 1, 31,0,0); // Expire at 31 Jan 2010
Calendar now = Calendar.getInstance();
// If you don't trust client's clock, fetch time from some reliable time server
if( now.after(expiry)){
// Exit with proper expiry message
}
else
{ 
// let the customer enjoy your software
} 

您可以在此处查看如何从受信任的时间服务器获取时间。

于 2010-01-27T11:29:10.843 回答
3

考虑使用 Java Web Start 为每个客户部署一个 JNLP 文件和一个客户特定的、难以猜测的位置的软件。这允许您进行集中管理,并在时间段结束时删除 JNLP。

还要确保一个小 jar 始终未缓存,因此客户需要联系您的服务器才能运行。

于 2010-01-27T11:32:37.793 回答
1

让他们通过远程桌面或 VNC 进行尝试。

于 2010-01-27T12:05:55.667 回答
1

对于windows应用程序,我按以下方式进行

我在我的程序中创建了一个注册表项,其中包含第一次使用的日期。该键隐藏在以非暗示性名称命名的字段中,并且值被加密;

我还存储了上次使用的日期,以避免时钟技巧。

在我的验证代码中,每次我启动程序时,它都会检查实际日期和程序第一次使用的日期。如果正确,我也会存储上次使用该程序的时间。我们有 3 个验证案例:

  1. 如果实际日期大于初始时间,与演示期重叠,则不再使用该程序。

  2. 如果计算机日期小于上次使用程序的时间,则用户尝试倒回系统时钟。在此之后该程序不能再使用了

  3. 最后一种情况是系统日期在初始使用日期之后和到期日期之前。在这种情况下,允许使用该程序。

    // 此代码用于系统注册表访问 public static Preferences userPref = Preferences.userRoot();

    // 写入注册表 userPref.put("keyName", "value");

    // 读取注册表 String read = userPref.get(key, "0");

于 2010-01-27T12:18:46.230 回答
0

而不是 4 个文件,而是有一个文件,并在安装过程中将数量(客户端可以使用演示版的次数)写入文件。在每次运行时检查文件是否存在,减少数字并再次写入同一个文件。

如果找不到文件或值为零,则退出程序。

于 2010-01-27T11:33:47.463 回答
0

很快,这就是我的想法。

  1. 创建一个数据结构,如

班级 {

道具 uid = 主机名;道具 MaxUsage = 5; 道具已经使用 = 5;

}

  1. 将此类实现为可序列化,将此文件写入磁盘而不使用主机名,例如http://www.java2s.com/Code/Java/File-Input-Output/Serializerclass.htm

  2. 将此可序列化文件与应用程序一起提供。

  3. 当应用程序第一次运行时,使用运行应用程序的主机的 HOSTNAME 写入属性 uid。每次应用程序运行时减少 AlreadyUsed 并将其保存到文件中。

  4. 每次应用程序运行时检查文件是否存在,如果不存在,则检查 uid 是否具有正确的 HOSTNAME 并且已使用的数量不是 == 0

如果您使用的是 JavaWebstart 之类的东西,它也将非常容易。

希望对您的事业有所帮助。

于 2010-01-27T12:26:06.313 回答
0

给他们一个客户“密钥”,让软件询问您自己的 Web 服务器上的一个小 servlet,该产品当前是否对具有此密钥的客户有效。

于 2010-01-27T15:36:55.877 回答