4

在某些程序上,您可以在演示期间运行它们,例如“十个任务”或“5 小时”,然后您才需要决定购买它们以继续使用它们,但如果您删除并卸载该程序然后重新安装它,它知道它以前已安装,不会让您再次运行演示。

它是如何做到的?当您下载它时,它是否会向 CDN 发送一个识别号(IP?),让它知道您以前下载过它,或者当程序本身安装时,它会检查以查看以前安装的痕迹吗?

4

3 回答 3

2

大多数“演示”软件通过从恶意软件中借用的功能来做到这一点:不完全卸载。卸载时不会删除属于该软件的文件或注册表项。重新安装时,软件会看到剩余部分并可以对其进行操作。

这种剩余部分经常使用的隐藏位置是系统目录(在 UAC 到达之前),但许多注册了一些类 GUID - 我知道没有人真正了解注册表中的哪些类是真实的或不是真实的。

于 2012-06-12T20:32:59.857 回答
1

我的软件在用户系统中放置了面包屑,用于检查以前的安装。这比互联网检查您的 IP 更难解决(假设您不知道您在寻找什么或在哪里)。因为您总是可以欺骗您的连接信息,或者只是在安装时断开与互联网的连接。

于 2012-06-12T20:33:34.057 回答
1

有很多方法可以实现这一点。

最简单的实现方式(也是最简单的绕过方式)

  • 第一次运行时,在某处创建一个注册表(或文本文件)条目
  • 每次运行任务(或应用程序)时,计数器加 1
  • 不要在安装程序应用程序中包含此文件/注册表(因此它会在卸载后保留)
  • 如果在任何时候计数过高,请通知用户试用已过期。

使用图像差异工具,这种方法很容易识别和克服。

最难克服或绕过的方法是使用服务器。在第一次运行时,根据用户计算机名称、驱动器序列号等生成哈希码,并将其发布到您的服务器。然后,服务器将此作为唯一安装进行跟踪,并允许应用程序运行。每次运行应用程序时,都会更新服务器。这样,用户就无法找到面包屑并删除它们,因为它们在您的服务器上。不利的一面是,此方法需要 Internet 连接。

可能有更复杂的方法可以实现此结果,但以上都是我遇到的两种实现。

于 2012-06-12T20:36:51.980 回答