Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/303.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在不使用数据库的情况下保护我的C#windows应用程序免受盗版?_C# - Fatal编程技术网

如何在不使用数据库的情况下保护我的C#windows应用程序免受盗版?

如何在不使用数据库的情况下保护我的C#windows应用程序免受盗版?,c#,C#,我正在使用C#在.NETFramework 3.5中为我的客户端开发一个windows应用程序。 我的应用程序中不需要任何数据库 我希望通过在安装时进行注册过程来保护我的应用程序,在注册过程中,用户将被要求输入注册密钥,该密钥应依赖于机器,否则用户可以复制安装文件夹并分发给其他人,这是我不希望发生的 请建议我,如何做到这一点 谢谢, 我的建议是: 1) 您可以在注册后创建注册表项,并在应用程序启动时检查此注册表项 2) 您可以创建一个web服务(通过本地网络或internet),并在启动时检查此

我正在使用C#在.NETFramework 3.5中为我的客户端开发一个windows应用程序。 我的应用程序中不需要任何数据库

我希望通过在安装时进行注册过程来保护我的应用程序,在注册过程中,用户将被要求输入注册密钥,该密钥应依赖于机器,否则用户可以复制安装文件夹并分发给其他人,这是我不希望发生的

请建议我,如何做到这一点

谢谢,
我的建议是:

1) 您可以在注册后创建注册表项,并在应用程序启动时检查此注册表项

2) 您可以创建一个web服务(通过本地网络或internet),并在启动时检查此版本是否已注册

3) 创建一个自定义文件并根据机器存储哈希值,在应用程序启动时检查此文件


在每三种情况下,请不要忘记模糊处理

我相信您将需要注册服务

  • 当用户注册时(他们需要在线),他们的注册“代码”连同他们的机器详细信息/其他标识(用户名?)一起发送到您的注册服务

  • 您的服务验证这一点并返回一个密钥,您的应用程序可以使用其机器详细信息/标识对该密钥进行解密。您的服务还将该注册码标记为“已使用”,这样其他人就无法通过使用该注册码获得有效密钥

  • 应用程序将有效项存储在注册表中,甚至存储在配置中。它不会在另一台机器上工作,因为它特定于机器的详细信息


    • 无法保证软件的安全性。甚至在网络上注册也可以通过使用数据包分析器来伪造。在保护软件安全方面,您所能做的就是让它对专业人士来说稍微不方便,对涉猎者来说比较困难,而对没有知识的人来说则不可能。一般来说,模糊处理并不是一种很好的保护,因为最终会有人发现并发布它

      还要记住,你的程序越安全,合法用户就越难找到它。要在可用性、安全性和安全性被破坏时所损失的价值之间达成一个艰难的平衡。没有一种硬性的“正确”方式来确保安全


      对于依赖于机器的信息,您可以收集有关该系统上硬件的信息,以某种方式对其进行散列,并将值存储在某个位置,然后在每次启动程序时进行检查。它不是万无一失的,但它可以很容易地实现一些安全性。

      Broaddhurst,如果它是一个从未连接到Internet的脱机应用程序呢?@Coder323那么您如何知道注册码以前是否使用过?另一种方法是,您的应用程序的每个副本都固定为一个注册码,但这更困难。可能是在安装后注册一些模糊代码?我不确定通过在线注册是否完全安全,因为现在有专业人士破解任何产品。关于你的第一点和第三点,我们是否必须在安装后创建自定义方法?