我开发了想要通过许可保护的软件。到目前为止,我已经获得了使用硬件组件的详细信息为每台机器生成唯一 ID 的代码。然后,我可以允许针对一个序列密钥激活 5 台机器(我出售的是每个许可证 5 台机器)。
这一切都很好,但显然只在有互联网连接的机器上。这只是这种保护的限制,我对此无能为力吗?或者有什么办法可以解决这个问题?
注意:在这一点上,在这个线程中,我不会批评我生成唯一 ID 的方式,这是我选择的方法,而且相当无知,需要坚持一段时间原因。
我开发了想要通过许可保护的软件。到目前为止,我已经获得了使用硬件组件的详细信息为每台机器生成唯一 ID 的代码。然后,我可以允许针对一个序列密钥激活 5 台机器(我出售的是每个许可证 5 台机器)。
这一切都很好,但显然只在有互联网连接的机器上。这只是这种保护的限制,我对此无能为力吗?或者有什么办法可以解决这个问题?
注意:在这一点上,在这个线程中,我不会批评我生成唯一 ID 的方式,这是我选择的方法,而且相当无知,需要坚持一段时间原因。
要求拥有中央许可服务器。启动时的每个程序都会向该服务器注册。服务器告诉客户端它是否可以启动。如果已经启动了 5 个程序,则程序拒绝启动。
当程序停止时,它会再次告诉许可服务器不再需要它的许可证。
任务完成。无需互联网。
我认为你有几个选择:
实施某种自检:每个运行实例将其唯一 ID 发送到网络,然后监听其他运行实例的唯一 ID。通过网络接收超过四个唯一 ID 的第一个实例会自行关闭。我想这可以使用 UDP 广播来实现。这个的实现并不是那么简单:
如果我要实现类似的东西,我会介绍以下三种包类型:
在所有情况下,您都应该考虑将允许的实例数编码到密钥中,以便以后可以分发不同大小的密钥。