发布任何软件评估版的最佳方式?

问题描述:

我想分发我的软件(.net窗口应用程序)与30天的评估版本,而不考虑系统时间。发布任何软件评估版的最佳方式?

我不想使用互联网获取时间,因为软件将在没有互联网的机器上运行。

有人可以建议我如何在不使用系统时间和互联网的情况下分发我的软件?

也有可能限制它可以安装的计算机数量?

+0

你正在寻找一个现有的软件或重新发明*? – Snowbear 2011-03-20 11:32:08

这不是软件许可的经典限制吗?我不知道如何在不考虑系统时间的情况下限制评估,除非与您省略的应用程序有某些与日期相关的方面。

至于限制计算机数量:

我不知道,如果微软将让你这样做,但如果顾客进入他们的微软的激活密钥,你可以创建一个系统,然后你给回某种特定于应用程序的应用程序密钥。

+0

这无济于事,因为使用虚拟机很容易绕过任何本地化的许可方案。如果软件要绑定到特定的Windows安装,而不是激活密钥本身,则可以将其用作一个(多个)源的哈希函数。然后,您可以使用此散列加密代码,并在运行时根据需要使用现场计算的散列对其进行解密。 – datenwolf 2011-03-20 12:09:28

+0

请注意,机器绑定通常是可破解的,并且可能会在用户更改机器参数时产生问题。因此,使用Windows的版本,MAC地址,CPU序列号等来创建一个散列是很好的,直到用户得到一个错误的否定,然后他们不高兴。 – 2011-03-25 20:15:02

没有外部支持,这是不可能

规避用户只需将您的软件安装在虚拟机中,该虚拟机配置为写入时复制模式(因此虚拟机中的所有更改都将转到单独的磁盘映像),并且每次启动虚拟机时系统时钟将被设置为特定日期。这个虚拟机镜像可以被传输到任意数量的计算机上,并且虚拟机系统时钟总是从同一日期开始。同样,对于操作系统的任何运行时效果,如安装的运行时计数器,都将在虚拟机的每次新启动时重置。

有效限制软件使用的唯一方法是将其绑定到某个外部数据源。无论是通过互联网,还是通过带有自己的时钟的硬件加密狗运送它;该加密狗也可以是一些小型的网络设备,发放许可证,因此单个加密狗可以许可许多计算机。

然而,你不能用软件来做到这一点。

因为用户可以操纵它,所以使用日期并不安全。 但另一种方法是限制应用程序可以启动的次数。使用可以存储在文件或注册表中的计数器。这个计数器应该被加密。如果计数器值太大,丢失或无效(您可以使用校验和),则评估期结束。

你绝对可以通过外部授权系统来做到这一点(免责声明:我为一个这样的系统的制造商工作)。它可以是无法破解的,但它不是免费的。

如果你想推出自己的,你可以存储加密的日期和时间函数 - 也许在注册表中 - 然后将该日期与sys日期/时间进行比较。如果sys日期晚于存储日期,则在应用程序启动时将存储的日期值设置为正向。如果系统日期早于存储日期,请考虑锁定应用程序,直到用户与您联系,以解释为什么他们将系统日期设置回来。这在许多层面上都不是万无一失的,但它比仅仅查看系统日期要好。另一种方法是对已知的认证时间服务器进行http呼叫,并将系统日期和安装日期与该服务器进行比较。