2013-03-25 78 views
1

我必须创建具有符合以下特征的Java应用程序jar创建一个运行一次只-Java应用程序

  • 有装在罐子里的XML数据被读取的应用程序第一次开始。随着应用程序的每次连续启动,数据都从动态创建的二进制文件中加载。
  • 客户不应该能够将应用程序重置为其主要状态(例如,如果由于某种原因二进制文件被删除,应用程序将无法再次运行并给出错误消息)。
  • 这一切不应该依赖于它运行(这意味着如在Windows中设置注册表项不会做的工作)

总结我想,以防止一旦开始申请重置操作系统以限制应用程序的非法复用。

现在我就如何实现这一目标的想法:

  • 在第一次运行中删除从罐子XML(到目前为止我才恍然大悟,这是不可能的,让应用程序编辑它自己罐子。是真的吗?)
  • 设置一个变量/属性/设置/不管在第一次运行永久罐子(是可能的)

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

更新:

我没有找到这个确切的问题的解决方案,但我发现一个简单的解决方法:用我的软件一起我船某个特定文件的程序启动第一次后得到改变。当然,如果有人保留原始文件的副本,他总是可以替换它并重新开始。

+2

没有完美的解决方案。在每次运行之前,总有人可以保存备份并从备份中恢复。 – raptortech97 2013-03-25 16:29:43

+0

我知道没有完美的解决方案,但我想让它更难一点。我也知道,在运行一次之前复制jar会使整件事变得毫无意义。但它会很好,以防止已经运行的jar被重置 – gagabu 2013-03-25 16:35:33

回答

1

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

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

+0

我意识到这一点,但它已经有必要获得应用程序的第二个实例,因为在至少尝试它之前已经有人不太可能复制它了一旦。然后这个'作弊'似乎不是很明显 – gagabu 2013-03-25 16:38:56

相关问题