将变量的状态存储在C#中

Zai*_*Ali 2 c# windows-installer

我正在研究在用户安装应用程序时串行加密的ac#应用程序,并在我第一次询问用户输入密钥以及是否输入正确的密钥时运行应用程序.我运行应用程序.但是我要求这个过程应该只在安装后一次,​​我认为有两种可能性.

  1. 将软件验证状态存储在变量中并使用它来允许运行应用程序(我不想使用XML,对象序列化,因为我必须保存一个变量的状态,用户也可以删除序列化创建的文件).

  2. 在用户安装应用程序时询问用户密钥,如果输入错误的密钥则无法安装该软件.

有些人可以回答

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

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

And*_*ykh 5

软件保护是一个古老而广泛的主题.目前最先进的技术是,保护您的软件不可能100%可靠.迟早,如果有足够的曝光和/或兴趣,有人会破解它.

尽管如此,很多人和公司都在保护他们的软件产品,并且有很多方法(但不是100%可靠).

从你的问题来看,目前尚不清楚你的要求是什么.鉴于您所描述的内容,最简单的选择是使用密码压缩安装程序.如果用户不知道正确的密码,他们将无法解压缩zip文件并安装您的程序.

这通常不太实用,因为为每个人提供相同的密码.您想要进行自己的串行密钥验证,并考虑在安装时执行此操作.如果这是您想要的路线,则需要提供一些脚本来验证您的安装系统.您表示您正在使用Windows安装程序.您可以使用Windows Installer XML(WiX)工具集来编写安装.如果有足够的耐心,您可以在Windows安装程序包中构建密钥验证.最实用的方法是调用你在wix包中用c#编写的验证例程.您可以使用条件语法来检查安装中的条件.这应该涵盖您的选项2.

对于选项1,那么无论何时在系统中存储您的信息,用户总是能够到达并更改它(毕竟它是他们的计算机).有些人将其存储在注册表中,一些存储在关键文件中.删除这些文件通常不是问题,因为如果用户删除它们,您的程序将知道它不应该运行.但是,用户可以在其他机器上复制它们等.

隔离存储是另一个用.NET存储信息的地方.最终,它仍然是文件系统中一些深埋的文件.

软件保护再一次是一个复杂的主题,由您自己决定,您的要求是什么,您可以承担哪些妥协以及您选择实施什么.

祝好运!