我有一个我目前正在销售的应用程序,我想扩展它。
但是,我不希望人们只能复制 EXE 并将其提供给他们的朋友等。我知道这几乎是不可能的任务,但我想让非技术人员尽可能地努力。
显然,每次他们启动应用程序时,我都可以通过 Internet 对数据库进行密钥查找,但这意味着:
- 我愿意支付大量互联网流量到我的服务器。
- 如果无法验证密钥,则无法访问 Internet(或我的服务器已关闭/或某处的路由器)的人可能会阻止该应用程序运行。
- 使用 Wireshark / 流量嗅探器的聪明人可以解码我发回的任何密钥以激活应用程序,然后编写一些东西来绕过它。
因此,我正在考虑一些简单的东西,例如与计算机名称/MAC 地址/IP(购买时)相关的校验和,然后将其存储在计算机注册表中(1 个许可证 = 1 个密钥)。
然后,当应用程序打开时,它会检查正确的注册表项并将其与应用程序内的设置变量进行比较,以确保它在应用程序启动之前匹配。
如果有人将该应用程序提供给另一台计算机,则该密钥将不存在(如果他们购买了它,我可以给他们一个特殊的一次覆盖密钥,该密钥将在注册表中重新设置他们的密钥等)。没有原始付款详细信息的人无法获得此信息。
有没有人有任何更好的想法,而不是围绕互联网查找等,或者看到我提出的想法有任何问题?
该应用程序是用 C# 编写的,作为 .NET 4.5 中的 Windows 窗体应用程序
任何帮助将非常感激。