Java 正在尝试部署程序

Java 正在尝试部署程序,java,deployment,drm,Java,Deployment,Drm,我这里有一个问题:我创建了一个应用程序,就像今年我学校年鉴的计算机/数字化版本。我只想把这个程序发给那些买了这本书的人。这个程序是用java编程的,我可以做钥匙代码/序列号/cd钥匙,但我不知道怎么做。我不希望那些没有购买年鉴的人能够访问这个程序,我也不希望那些购买了年鉴的人把密码/密码发给他们的朋友,让他们可以使用它 我们可以建立一个在线交易,以防那些想要一本年鉴但没有购买的人可以以更便宜的价格获得该程序,但我们希望那些购买了真正的年鉴的人可以免费获得该程序。这是一个挑战,但我们可以在程序内部

我这里有一个问题:我创建了一个应用程序,就像今年我学校年鉴的计算机/数字化版本。我只想把这个程序发给那些买了这本书的人。这个程序是用java编程的,我可以做钥匙代码/序列号/cd钥匙,但我不知道怎么做。我不希望那些没有购买年鉴的人能够访问这个程序,我也不希望那些购买了年鉴的人把密码/密码发给他们的朋友,让他们可以使用它

我们可以建立一个在线交易,以防那些想要一本年鉴但没有购买的人可以以更便宜的价格获得该程序,但我们希望那些购买了真正的年鉴的人可以免费获得该程序。这是一个挑战,但我们可以在程序内部和在线上创建数据库,但我不确定

我想尝试的事情:

  • 加密文件
  • 光盘
  • 用户名/密码
  • CD上的“自毁”文件
  • 还有其他一些

但我们所有的想法都不符合我们的要求。

不确定这是否有帮助,但最近的一些游戏已经实施了在线实时客户端/服务器验证,以确保许可证合法,即使在单人游戏中也是如此(例如育碧软件的定居者7初始版本)。您至少可以保证当时只使用了软件的一个副本

可能有帮助的线程:


想到的最简单的方法(虽然从可用性的角度来看不是很好):

  • 应用程序需要internet访问才能安装和运行
  • 每次安装应用程序时,它都会为当前计算机生成一个唯一的id,并将其发送到服务器
  • 每次应用程序运行时,它都会将服务器上的id与当前计算机的id进行比较
  • 如果两人相配,它就跑;否则,它会通知用户软件已安装在另一台PC上
  • 每次用户安装软件时,都会覆盖服务器上的ID(监视安装,而不是卸载)
  • 这样,最后一个安装的人可以运行,但会将其他人踢出
人们仍然可以作弊,但这要求他们每次想运行软件时都要反复重新安装,这很烦人。烦恼扼杀盗版:)

奖励积分:

  • 每次软件检测到ID不匹配时,都会以“X美元的低价”购买许可证。如果产品足够好,价格足够低,人们就会付出代价