2

我正在尝试用 Java 创建一个桌面应用程序,

  1. 它不应该在我喜欢的另一台机器上运行。
  2. 它不应该在特定过期数据之后运行。

有什么好主意吗。请帮我。提前致谢。


据我所知(很少),我有一些建议:

对于Point1:通过对我的应用程序的启动进行硬编码来检查ProcessorId(因为它是唯一的)如果它是有效的,它应该执行否则显示“过期”警报。但是为此,我应该为每个我不介意的用户提供一个单独的 jar setUp。

对于 Point2:应该维护一个将存储当前日期的加密文件。在应用程序的每次启动期间。如果当前日期大于文件中的日期,我将更新文件中的日期字段。如果没有,我将显示“过期”警报。

这可能看起来很有趣,但这是我能想到的。

4

2 回答 2

2

无论您做什么,您都需要(至少)混淆您的代码并加密/破坏您使用的任何字符串文字。如果您阅读 processorId,您会收到来自客户的愤怒电话,他们的笔记本电脑刚刚从维修中心更换了整个主板(今天很常见)。

任何加密文件都可以由搭便车的用户轻松删除。你必须把它藏在好地方。在 Windows 上,人们喜欢在注册表中玩这种捉迷藏游戏,尤其是它的经典部分。

只是一些随机的想法...

于 2012-07-18T13:09:12.113 回答
2

对于要求 1:

您可以维护一个数据库,其中填充了为您的用户生成的密钥。在您的应用程序启动时,它可以请求一个密钥,然后调用数据库以更改要使用的密钥。您可以给每个用户一个唯一的密钥,以便在启动时输入。该系统需要在线访问才能使用您的应用程序,以便可以对数据库进行检查。

对于要求 2:

您可以维护密钥和与之关联的日期,并在启动时检查正确的日期。如果日期已过,用户将收到过期通知。

用户只需要输入一次密钥……在那之后,您的软件会记住该密钥,并且仅在旧密钥过期后才要求新密钥。

这里与 Marko 想法的权衡是,这种系统需要访问 Internet 才能检查数据库。


编辑:

如上所述的这种方法不会阻止某人简单地复制 JAR 并将其移动到不同的机器上。您可以根据机器的 MAC 地址生成密钥,然后在启动时检查系统地址,这将导致与上述 Marko 相同的问题,即更换主板会更改 MAC 地址。

编辑2:

我对这个问题思考得越多,我就越清楚您需要拥有并维护服务器端连接以满足您的要求。此外,我不认为 Java 是您的最佳选择,因为有人可以反编译您的 JAR。

于 2012-07-18T14:02:40.887 回答