2011-06-11 66 views
2

我正在使用C#在.NET Framework 3.5中为我的客户端开发一个Windows应用程序。 在我的应用程序中不需要任何数据库。如何在不使用数据库的情况下保护C#中的Windows应用程序免受盗版侵害?

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

请给我建议,如何实现这一目标。

感谢, Bibhu

回答

2

我相信你会需要一个注册服务。

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

  • 您的服务验证此问题&返回一个可由您的应用程序使用其机器详细信息/标识解密的密钥。您的服务还会将注册码标记为“已使用”,以便其他人无法通过使用该密钥来获取有效密钥。

  • 应用商店中的注册表,甚至配置了有效的密钥。它不适用于其他机器,因为它是针对机器细节的。

+0

Broaddhurst,如果它是一个从未连接到互联网的离线应用程序呢? – Coder323 2011-06-11 04:14:02

+0

@ Coder323那你怎么知道这个注册码是否曾被使用?另一种选择是,您发布的应用程序的每个副本都固定为一个注册码,但这更难。 – 2011-06-11 04:18:24

+0

安装后可能会有一些混淆代码需要注册吗?而且我不确定它是否完全有可能通过在线注册,因为现在有专业人员可以破解任何产​​品。 – Coder323 2011-06-11 04:32:22

2

我的建议是这样的方式:

1)你可以在注册后创建一个系统登录键,在启动时您的应用程序的检查这个系统登录键。

2),可以创建一个Web服务(通过局域网或互联网),并在启动时检查,如果这个版本registerd与否

3)创建一个自定义文件,并存储基于机器和散列值你启动应用来查看该文件

每3路,不要忘记混淆

+0

您的第1和第3点,做我们必须创建安装后的自定义方法? – Coder323 2011-06-11 04:15:49

2

没有办法保证软件是安全的。即使通过网络注册,也可能使用数据包分析器伪造。在确保软件安全方面,你所能做的只是让专业人员稍微不方便,对于不熟悉的人来说很难,对不熟悉的人来说不可能。一般来说,混淆并不是一种很好的保护,因为有人最终会发现并公布它。

还要记住的是,更安全,你让你的程序时,可以使用较少的合法用户可能会发现它。在可用性,安全性和在安全性被破坏时丢失的价值之间取得平衡是一个很难的平衡。没有坚实而快速的“正确”途径来确保某件事。

对于机器相关的信息,您可以收集有关该系统的硬件,哈希它在某种程度上,和存储一些值,然后在推出该计划的每一次检查。这不是简单的,但它可以很容易地实现一些安全性。

相关问题