如何保护我的C#程序不被未经授权安装在不同的系统上

如何保护我的C#程序不被未经授权安装在不同的系统上,c#,security,web,installation,activation-codes,C#,Security,Web,Installation,Activation Codes,我对C#程序语言有点陌生,我想知道如何确保我的C#桌面应用程序不在未经我许可的情况下在各种系统上被重新加密。我已经看到了一些可能的解决办法,但我需要你的建议 创建一个web激活系统,在该系统中,每次安装前都会发布pin/唯一代码 创建一个在线安装系统,允许用户直接从网站安装,而无需下载安装程序 请提供关于最佳选择的建议(如果php/mysql可能的话,我很乐意使用第一个选项,因为我不擅长asp.net)您的问题的答案取决于您想要实现的保护级别 最简单的方法就是实现产品密钥保护,而不需要任何在

我对C#程序语言有点陌生,我想知道如何确保我的C#桌面应用程序不在未经我许可的情况下在各种系统上被重新加密。我已经看到了一些可能的解决办法,但我需要你的建议

  • 创建一个web激活系统,在该系统中,每次安装前都会发布pin/唯一代码
  • 创建一个在线安装系统,允许用户直接从网站安装,而无需下载安装程序

请提供关于最佳选择的建议(如果php/mysql可能的话,我很乐意使用第一个选项,因为我不擅长asp.net)

您的问题的答案取决于您想要实现的保护级别

  • 最简单的方法就是实现产品密钥保护,而不需要任何在线激活:在这种情况下,密钥应该由程序中包含的特定算法选择/验证。这不是一个很好的保护,因为同一个密钥可能用于多个(理论上无限)产品安装

  • 在线产品密钥激活可以实现更强大的保护。在这种情况下,您可以指定每个键的激活次数(例如5次),从而防止同一个键被过度使用

  • 在这方面,有大量信息涉及此类密钥保护的实际方面


    Rgds,AB

    没有安装文件,你无法安装程序。您需要一些小的安装文件,可以从您的安装程序下载实际的安装文件,这就是我所看到的安装大多数程序的方式

    通常在服务器上,您可以选择下载完整的安装文件(包含所有安装数据的大安装文件)和在线安装文件(安装期间需要internet连接的小文件)

    在服务器上使用php或asp.net并不重要,因为唯一重要的是脚本在服务器上的作用


    验证的工作原理是,在安装程序之前,安装文件要求用户插入验证密钥,并将其发送到服务器。您的php脚本将搜索mysql表,如果找到该键,它将告诉您的安装文件密码是正确的,并在mysql表中将该键标记为“已使用”。否则,用户将不得不重新输入密钥。

    您可以执行以下操作:

  • 安装并启动应用程序后,应用程序会根据物理系统属性(如MAC地址/序列号等)生成用户密钥

  • 系统会提示用户输入相应的许可证密钥以激活产品

  • 用户使用web应用程序或通过电话或电子邮件提供用户密钥并请求相应的许可证密钥

  • 您将有一些算法从应用程序可以验证的用户密钥生成唯一的许可证密钥

  • 收到许可证密钥后,用户在应用程序中输入相同的密钥并开始使用


  • 在另一台机器上安装应用程序会更改用户密钥,应用程序将无法运行。

    o我想补充一点,生成密钥的方式可能是:在您的网站上,您可以让他们使用peypal支付费用,或者执行其他操作,如注册,然后,您的php脚本将向他们发送一封带有该密钥的电子邮件,并将该密钥添加到您的mysql表中。非常感谢,这将对我起作用(使用php/mysql进行身份验证),但还有一个问题,请您给我一个提示,我如何从C#桌面应用程序将信息发送到我的php站点dk这是如何在C#中完成的,但这一页似乎是关于这一点的。基本上,您只需使用GET方法将数据发送到服务器并检索信息。我还建议您不要尝试进行在线安装,完整的安装文件更容易制作。另外,如果回答了你的问题,你可以接受我的回答。