【问题标题】:create a run-only-once java application创建一个只运行一次的java应用程序
【发布时间】:2013-03-25 16:26:59
【问题描述】:

我必须创建一个 jar 和一个满足以下功能的 java 应用程序:

  • jar 中包含 xml 数据,这些数据在应用程序第一次启动时被读取。每次连续启动应用程序时,都会从动态创建的二进制文件中加载数据。
  • 客户不应将应用程序重置为其主要状态(例如,如果二进制文件因某种原因被删除,应用程序应无法再次运行并给出错误消息)。
  • 所有这些都不应依赖于它所运行的操作系统(这意味着例如在 Windows 中设置注册表项将无法完成这项工作)

总结一下,我想防止曾经启动的应用程序被重置,以限制应用程序的非法重用。

现在说说我的想法:

  • 在第一次运行时从 jar 中删除 xml(到目前为止,我了解到不能让应用程序编辑它自己的 jar。这是真的吗?)
  • 在第一次运行时永久设置 jar 中的变量/属性/设置/任何内容(可能)

关于如何实现这一点的任何建议/想法?

更新:

我没有找到解决这个确切问题的方法,但我找到了一个简单的解决方法:连同我的软件一起发布了一个特定文件,该文件在程序第一次启动后会发生更改。当然,如果有人保留原始文件的副本,他可以随时替换它并重新开始。

【问题讨论】:

  • 对此没有完美的解决方案。每次运行之前,总有人可以保存备份并从备份中恢复。
  • 我知道没有完美的解决方案,但我想让它变得更难一些。我也知道,在运行一次之前复制 jar 会使整个事情变得毫无意义。但最好防止重置已经运行的 jar

标签: java jar copy-protection runonce


【解决方案1】:

任何能够删除二进制文件的用户,只要有足够的时间,也能够恢复在 jar 中所做的任何更改。当应用程序的唯一现有部分在用户手中时,您将无法阻止对其进行更改。

您可以轻松地存储原始 jar 的备份、制作副本、将其用于一次运行、删除、复制原始 jar 等。您需要在用户计算机之外使用某种机制,例如激活服务器.用户获得一个代码来激活帐户,并且不能再次使用该代码。

【讨论】:

  • 我知道这一点,但它已经需要获取应用程序的第二个实例,因为在至少尝试一次之前,不太可能有人会复制它。然后这个“作弊”似乎不是很明显
猜你喜欢
  • 2023-03-05
  • 1970-01-01
  • 2010-10-29
  • 2022-01-05
  • 2017-02-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多