我即将完成我的自由职业Windows Forms项目。
如何处理许可证是最简单的方法?我的目标机器没有互联网访问,因此我认为通过webservice验证不是最佳选择。
我只是不想让他们复制我的程序并在其他机器上运行,甚至自己销售它。
我即将完成我的自由职业Windows Forms项目。
如何处理许可证是最简单的方法?我的目标机器没有互联网访问,因此我认为通过webservice验证不是最佳选择。
我只是不想让他们复制我的程序并在其他机器上运行,甚至自己销售它。
有很多方法可以实现,这些方法都取决于你的目标受众/部署环境。
由于你不能打电话回家,所以你需要依赖序列号。如果你有一个客户端/服务器架构,那么你可以将注册信息存储在服务器上,客户端可以检查它们。
如果只是一个仅限客户端的应用程序,那么你可以:1)使用序列号;2)让他们生成一个序列请求,该请求使用他们的MAC地址或其他唯一标识符来确定他们正在安装的机器。这样,当你根据他们的请求发出序列号时,它只能在生成请求的机器上工作。
你可以使用一个加密狗,我认为这是最安全的方式。 加密狗可以保存应用程序的敏感部分,只有在插入USB端口时才能运行应用程序。你应该多了解一下,我认为有一个专门针对DotNet应用程序的加密狗。 相信我,我们公司长期以来都在使用它。
如果您的软件条款规定了这样的许可方式,那么这应该足够了。
不要忘记,由于您编写了此软件,很有可能会被召回进行修复/增强。这应该为您提供了充足的机会来查看您的许可是否被滥用。
为您的软件包含一个安装程序。该安装程序应设置一些注册表键,以标识此计算机具有有效的安装;然后您的程序将查询这些键并确定是否应运行。
如何生成这些键以及它们应该是什么的问题取决于您想要多么深奥。它们越简单,您实现起来就越容易,但对于他人来说也越容易欺骗。如果您只想使购买许可证比欺骗安装更容易,可以通过要求安装程序需要一个许可证密钥来实现,该密钥可以被解密为您期望的内容(例如用户输入的名称)。然后,它可以加密并设置一个注册表键,当您的程序启动时将解密该键以确定有效的安装。这可以被欺骗,并且在没有互联网访问的情况下,它不能证明一个人没有在多台计算机上使用相同的密钥。
如果您想确保每个安装都是独立许可的,而不会失败,您必须拥有互联网访问,因为您的安装程序或程序本身将不得不与集中式网络服务(或许可证密钥服务器,常用于企业安装)通信,以确定该密钥是真实的,而且没有被其他计算机使用。