我正在使用C#为我的客户端在.NET Framework 3.5中开发一个Windows应用程序。 我的应用程序中不需要任何数据库。
我希望通过在安装时进行注册过程来保护我的应用程序,在该过程中将要求用户输入注册密钥,该密钥应该取决于机器,否则用户可以复制安装文件夹并分发给其他人,我不想发生。
请建议我,如何实现这一点。
谢谢, Bibhu
答案 0 :(得分:2)
我的建议就是这样:
1)您可以在注册后创建注册码,并在启动应用时查看此注册码。
2)您可以创建一个Web服务(通过本地网络或互联网),并在启动时检查此版本是否已注册
3)创建一个自定义文件并根据机器存储散列值,并在启动时应用程序检查此文件
每3种方式都不要忘记OBFUSCATION
答案 1 :(得分:2)
我相信您需要注册服务。
当用户注册(他们需要在线)时,他们的注册“代码”会连同他们的机器详细信息/其他身份证明(用户名?)一起发送到您的注册服务。
您的服务会验证此&返回一个密钥,您的应用程序可以使用其机器详细信息/标识对其进行解密。您的服务还会将注册码标记为“已使用”,以便其他任何人都无法通过使用它来获取有效密钥。
应用程序将有效密钥存储在注册表中,甚至是配置。它不适用于其他机器,因为它特定于机器详细信息。
答案 2 :(得分:2)
无法保证软件安全。即使通过网络注册也可以使用数据包分析器伪造。在保护软件方面,您所能做的只是让专业人员稍微不方便,对于困难的人来说是困难的,对于没有知识的人来说是不可能的。一般来说,人们都认为混淆不是一种好的保护措施,因为无论如何,有人最终会将其解决并发布。
另请注意,您制作程序越安全,合法用户可能会找到它的可用性就越低。如果安全性被破坏,那么在可用性,安全性和丢失的价值之间取得很大的平衡。没有硬性和快速的“正确”方法来保护某些东西。
对于机器相关信息,您可以收集有关该系统上硬件的信息,以某种方式对其进行散列,并将值存储在某处,然后每次在程序启动时进行检查。这不是万无一失的,但它可以很容易地实现一些安全性。