.net – 我将如何执行WPF Windows应用程序的许可

我开发了一个我想尝试和销售的小应用程序,但我不熟悉如何最好地去做.

>我将如何锁定程序进行试用1.
>我将如何处理接受付款?

记住,我是一个没有很多钱的单身乐队,我希望能够免费或低成本,有效,安全和简单地实施和维护的解决方案.这不是我有很多经验,因为我通常为公共部门开发,他们购买一个解决方案作为一个绅士,我们从来没有许可.

任何帮助真的将不胜感激.
谢谢,

我可以告诉你我该怎么做免责声明:您的里程可能会有所不同.这是为了防止一个简单的WinForms或WPF或其他桌面应用程序的偶然盗版.它不是特别强壮或防御复杂的破解,但它是一个伟大的工作,以防止休闲盗版.

>对于许可,我尝试了几个第三方解决方案.它们相当容易用于防止随意盗版的名义情况,这当然是唯一应该真正关心的盗版.
>我发现没有一个许可提供商真正兼容现有的支付处理器/网关.有一些“一体化”解决方案,但技术债务水平对我来说是不可接受的(自由职业者和独资开发商).我正在寻找一个简单的方式从网站上的“立即购买”链接,以在购买后解锁桌面软件.一些现有的“一体化”解决方案为此目的是过度的,有些忽略了“购买”方面.
>我最终使用Xml Digital Signatures使用应用程序的私钥对许可证文件进行签名,该密钥从未分发给用户.结果:您的目标机器上有一个.LIC或.LICX文件,用户可以读取(它是纯文本,除了被包围的签名),但不进行修改. (或者说,如果你不知道他们已经修改了它们,就不能修改它).这个小文件是整个系统的关键.
>当应用程序加载时,它会验证XML签名是否有效(使用与应用程序一起分发的应用程序的公钥),如果有效,它将从许可证文件中读取信息,并启用/禁用某些功能那.例如,您的许可证文件可能包含产品过期日期或几个独特的机器信息(请小心,始终不要为您的合法用户带来不便…您不希望他们重新申请许可证键每次他们改变一个硬盘驱动器).
>作为一个额外的(和稍微更有侵略性的)步骤,您可以让应用程序连接到您的服务器,尽管这会导致服务器停机问题等等.有些开发商愿意忍受这个,其他的不是.
>现在购买部分有很多选择.贝宝是最简单的.您可能喜欢或可能不喜欢他们的费率计划,但是与PayPal一起开始运行是绝对的契机.
>因此,您需要一个Premier或Business帐户,而不是一个个人帐户.注意:在Paypal文档中,有时候您需要一个Paypal Business帐户.每当他们说,他们实际上意味着“一个贝宝商业或总理帐户”.
>现在自己创建一个产品网站,并定制您的“立即购买”按钮等.当用户进行购买时,您的网站将从Paypal IPN收到通知,这是他们的通知服务.此ping只是调用您网站上定义的HTTP端点,并包含您要购买的所有信息.主要是用户的电子邮件
(好吧,我觉得我应该提到:Paypal和大多数其他合法的处理器都有一个“沙箱”,你可以在上线之前测试所有这些.想知道如何给你带来温暖的模糊,实际上,行)
>您将在购买后自动用户发送激活码,因此无需等待24小时即可手动发送代码.存储此激活码(在这种情况下可以是任何唯一的,难以猜测的数字,如GUID,经过精美化或者未经优化的),具有您将跟踪的用于检测重复代码的使用次数.
>用户通过您提供的屏幕将激活码输入软件.
>软件通过https联系服务器(这是仅当软件被解锁时才发生的一次性事件),并说:“这个用户只是给我有效的许可证代码?”
>如果提供的激活代码与销售时存储在数据库中的代码相匹配,并且激活码尚未被确认,那么成功!
>然后,服务器需要构建许可证文件,这是一个非常简单的XML或文本文件,其中包含“允许该软件的这个副本”.它不应该包含什么标准,只有少数约定.
>服务器使用应用程序的私钥对许可证文件进行签名,并将其作为数据流返回给应用程序…
>将其保存为.LIC或.LICX(或任何需要的扩展名)文件,然后根据步骤3检查加载时间.

这对我来说真的很好,这是一个实现的契机.整个事情的关键是简单的:相信那些XML DSigs.当LIC文件丢失时,认为试用模式.当sig被修改时,你切换到试用模式.只有当LIC文件存在,有效签名并包含正确的信息时,您(代码中)是否打开“完整”功能的访问权限.

此外,您的代码中还会插入多个许可证检查点.我在应用程序启动时执行一个操作,另一个在空闲状态,另一个在进入主要功能区域之前.所以如果有人反转代码,他们可以,他们至少要做一些搜索来排除所有的许可证检查.当然,你什么也不能做,可以阻止人们修补这些支票.你只是想让它变得更加困难.

相关文章

Windows注册表操作基础代码 Windows下对注册表进行操作使用的...
黑客常用WinAPI函数整理之前的博客写了很多关于Windows编程的...
一个简单的Windows Socket可复用框架说起网络编程,无非是建...
Windows文件操作基础代码 Windows下对文件进行操作使用的一段...
Winpcap基础代码 使用Winpcap进行网络数据的截获和发送都需要...
使用vbs脚本进行批量编码转换 最近需要使用SourceInsight查看...