2011-06-10 77 views
2

我正在研究一个c#应用程序,该应用程序在用户安装应用程序并第一次运行应用程序时被串行加密,我询问用户密钥以及他是否输入了正确的密钥。我运行该应用程序。但我的要求,这个过程应该是安装后的一次, 我认为有两种可能性。在一个变量在C中存储变量的状态#

  1. Store软件验证状态,并用它允许应用程序的运行(我不希望使用XML,对象序列化,因为我要救一个变量的状态也用户可以删除创建的文件通过序列化)。

  2. 询问用户对键的同时,他正在安装应用程序,如果他输错键,然后他不应该是能够安装软件。

可以将某些身体答案

  1. 是否有存储单个变量的状态的简单方法。

或 2.如何手动触发安装程序(验证后)。

回答

2

对于这样的事情,我会加密它并将其存储在注册表中。这不是他们想要存储在设置文件中的那种类型。您可以查看this codeproject关于如何使用C#访问注册表的文章。

5

Software Protection是一个古老而广泛的话题。目前的技术状况是,保护软件不可能100%可靠。迟早,有人会破解它,给予足够的曝光和/或兴趣。

尽管如此,很多人和公司保护自己的软件产品,并有许多的方式来这(不是100%可靠不过)。

从您的问题中不清楚您的要求是什么。根据你所描述的,最简单的选择是使用密码压缩安装程序。如果用户不知道正确的密码,他们将无法解压zip文件并安装程序。

这通常不太实际,因为每个人都提供相同的密码。你想要做你自己的序列密钥验证,并且你正在考虑在安装的时候这样做。如果这是你想要的路线,你需要提供一些脚本来验证你的安装系统。您指出,您正在使用Windows安装程序。您可以使用Windows Installer XML (WiX) toolset来编写安装。如果有足够的耐心,可以将密钥验证构建到Windows安装程序包中。最可行的方法是从wix包中调用您在c#中编写的验证例程。您可以使用Conditional Syntax检查安装中的条件。这应包括您选择2

至于选项1,那么只要在系统中存储您的信息块,用户随时可以到那里,并改变它(这毕竟是自己的电脑)。有些人将其存储在注册表中,有些存储在密钥文件中。删除这些文件通常不是问题,因为如果用户删除它们,程序就会知道它不应该运行。然而,用户将能够将它们复制其他机器上,等

Isolated Storage尚未储存您使用.NET信息另一个地方。无论如何,最终它都是文件系统中深埋的文件。

软件保护再次是一个复杂的话题,由您来决定,您的要求是什么,您可以承受的妥协以及您选择实施的内容。

祝你好运!