我想分发我的软件(.net windows应用程序),评估版本为30天,与系统时间无关。
我不想使用互联网来获取时间,因为软件将在没有互联网的机器上运行。
有人可以建议我如何在不使用系统时间和互联网的情况下分发我的软件吗?
是否可以限制可以安装它的计算机数量?
答案 0 :(得分:3)
如果没有外部支持,不可能。
规避用户只需将您的软件安装在虚拟机中,该虚拟机配置为写时复制模式(因此VM中的所有更改都会转到单独的磁盘映像),并且每次启动VM时都会将VMs系统安装时钟将设置为特定日期。可以将该VM映像传输到任意数量的计算机,并且VM系统时钟始终在同一日期开始。此外,操作系统上的任何运行时效果(如您安装的运行时计数器)都将在每次重新启动VM时重置。
有效限制软件使用的唯一方法是将其与某些外部数据源绑定。无论是通过互联网,还是通过带有自己时钟的硬件加密狗运送它;加密狗也可能是一些小型网络设备,分发许可证,因此单个加密狗可能会许可许多计算机。
但是你不能只用软件来做。
答案 1 :(得分:1)
使用Date是绝对不可靠的,因为用户可以操作它。 但另一种方法是限制应用程序启动的次数。使用可以存储在文件或注册表中的计数器。此计数器应加密。如果计数器值太大,丢失或无效(您可以使用校验和),则评估期结束。
答案 2 :(得分:0)
这不是软件许可的经典限制吗?我不知道如何限制评估而不考虑系统时间,除非您省略了与应用程序有关的日期相关方面。
至于限制计算机的数量:
我不知道微软是否允许你这样做,但是你可以创建一个系统,让客户输入他们的微软激活密钥,然后你给出某种特定于应用程序的应用程序密钥。
答案 3 :(得分:0)
您绝对可以通过外部许可系统执行此操作(免责声明:我为一个此类系统的制造商工作)。它可以是不可破解的,但它不是免费的。
如果您想自己滚动,可以存储加密的日期和时间函数 - 可能在注册表中 - 然后将该日期与sys日期/时间进行比较。如果sys日期晚于存储日期,则在应用程序启动时设置存储的日期值。如果sys日期早于存储日期,请考虑锁定应用程序,直到用户与您联系以解释他们为什么设置系统日期。这在许多层面上并非万无一失,但它比仅仅查看系统日期更好。另一种方法是对已知的认证时间服务器进行http调用,并将系统日期和安装日期与该服务器进行比较。