3

我即将完成开发一个我想作为共享软件发布的 Windows 应用程序。它是用 C# 开发的,将在 .Net 3.5+ 机器上运行。要使用它,用户必须在线。

我的目的是让用户试用 30 天,然后限制其功能,直到购买注册为止。

安装程序将通过 msi 文件提供。

谁能给出如何实现这一点的一般步骤?这里有一些更具体的问题:由于我试图避免为了建立电子商务网站而进行大量前期投资,所以我正在考虑一种方法,让用户以某种方式付款,同时提供他的电子邮件,其中他然后收到解锁密钥。我找到了一些解决方案,如下所示: 注册服务

我仍然不确定,如果他们是要走的路。

我主要关心的一个问题是防止给定序列号的重用,例如,如果两个用户同时使用相同的序列号运行程序,则应禁用该序列号或采取其他措施。另一点是,我的软件可能只是在不使用安装程序的情况下从一台计算机复制到另一台计算机,因此仅保护安装程序本身是不够的。

也许已经经历过这个过程的人可以给我一些指导,比如所涉及的一般步骤(比如 1. 获取域,2. 获取某种虚拟主机 ....)并解决我上面提到的一些问题。

我很感谢人们可以给我的任何帮助。

4

3 回答 3

1

防止黑客破坏您的代码的精力和努力非常耗时。专注于分销和销售会为您提供更好的服务。

我第一次进入共享软件是在 1990 年。当时的短语是 S=R,它代表共享软件等于注册。从那以后很多事情改变了。网络充满了静电,你必须弄清楚如何在静电之上听到。

这是我学到的东西

  • 不要爱上你的软件。总会有人认为它应该以不同的方式工作。不要尝试它们转换为您的思维方式,而是倾听并为下一个版本构建增强列表。
  • 了解如何出售或付钱给某人以帮助您出售您的东西
  • Digital River 拥有大多数注册公司
  • 创建免费的损失领导者,将流量引导回您
  • 找到一个未被满足的利基市场并填补它
于 2009-11-01T21:56:16.887 回答
1

我没有对你有用的答案,但我确实有一些我想分享的观察结果太大而无法发表评论。希望其他具有更多技术专长的人可以填写详细信息。

我主要关心的一个问题是防止给定序列号的重用,例如,如果两个用户同时使用相同的序列号运行程序,则应禁用该序列号或采取其他措施。

为确保两个人不使用相同的序列号,您的程序将不得不“打电话回家”。许多软件在安装时执行此操作,方法是在安装过程中将序列号发回给您。如果您想实时执行此操作,您的应用程序必须定期连接到您的服务器并说“此序列号正在使用中”。

这不是非常用户友好。每次执行序列号检查时,用户都必须连接到 Internet,并且必须将其防火墙配置为允许它。这也意味着您必须承诺永远保持服务器端(域名、服务器架构)不变。如果您的服务器出现故障,或者您丢失了域,您的软件将无法运行。

当然,如果专门连接到您的服务(而不是一般的 Internet)对于产品的操作来说是必不可少的,那么它就会变得更加容易和用户友好。

另一点是,我的软件可能只是在不使用安装程序的情况下从一台计算机复制到另一台计算机,因此仅保护安装程序本身是不够的。

这里有两个攻击向量。一种是在用户系统的某处隐藏一条信息。这不是非常强大。另一种是检查和编码用户的硬件配置,并在某处对数据进行编码。如果用户更改他们的硬件,强制产品重新激活自身(这是 Windows 和 SecuROM 所做的)。

当您执行此操作时,请记住实际上不可能防止非法复制软件。作为(大概)小型软件开发人员,您需要平衡破解软件的难度和 DRM 对用户造成的负面影响。我个人非常不愿意使用带有您描述的检查的软件。有些人比我更宽容。有些人就更少了。

于 2009-09-02T14:00:48.460 回答
0

防止复制:密钥基于客户的 NIC MAC。大多数用户不会去修改他们的 NIC MAC 的麻烦。您的应用程序将有一个对话框来创建和发送密钥请求,包括它们的 MAC。

悬而未决的问题是许多应用程序被破解并发布到warez 网站。通过将密钥验证代码隐藏在应用程序的多个位置来降低这种可能性。注意尊重诚实的用户,并确保您的密钥验证不会以任何方式惹恼他们。明确表示他们购买的密钥是节点锁定的。

并担心市场渗透。通过提供没有附加条件的基础产品来获得更大的安装基础。干杯——瑞克

于 2009-09-02T14:42:01.347 回答