如何使用户可变的常量?

时间:2015-01-30 11:39:51

标签: c++ windows passwords console-application

我想创建一个简单的控制台应用程序,它将执行我经常用于学校的一些有用的函数(检查数字是否为素数,写入数字的因子,求解二次方程式等等。< / em>的)。

但是当我制作它时,我决定添加一些关于应用程序的细节,以使用户界面更漂亮:写下应用程序的名称,版本......

我想到了一个管理员密码我可以输入,然后我可以修改这些额外的细节或更改密码。

但是,如果我有一个密码,我每次运行应用程序时都会存储const变量或常规变量const string password = "blablabla;",它将具有相同的密码"blablabla"所以是否有办法以某种方式更改密码和其他额外数据,以便程序永久保存新值?

我想将所有这些额外信息保存在某个文件中,然后每次都从它中读取它们,但是如果文件被更改则然后数据将会到达并且我不想要 我想仅使用管理员密码更改数据。我还认为我可以对这些信息进行加密,但仍然可以轻松更改。

我还认为程序可以打开源代码,然后修改那些初始化的值,但是我需要编译该文件,我也不想这样。

我只想要一个可以运行的.exe应用,并且可以使用管理员密码永久更改这些信息。

现在有人可以这样做吗?

我用C ++编写这个应用程序。

提前谢谢

2 个答案:

答案 0 :(得分:1)

  

有没有办法以某种方式更改密码和其他额外数据,以便程序永久保存新值?

理论上,您可以修改可执行文件数据段中的常量。如何做到这取决于可执行格式。但我认为这是一个麻烦的解决方法,并且很难阻止有人在没有密码的情况下修改可执行文件。你真正想要的是变量。你对如何初始化变量有一个好主意:

  

我想将所有这些额外信息保存在某个文件中

一个好主意。简单的解决方案,可能适合您应用的范围。

  

如果文件被更改,那么数据将是,我不想要这样。我想仅使用管理员密码更改数据。

然后以某种方式保护文件。例如,您可以不授予任何人对该文件的写入权限。或者,如果你是偏执狂(这只是一个适合你的小型控制台应用程序,对吗?)加密它......

  

我还以为我可以对这些信息进行加密,但仍然可以轻松更改。

没有钥匙就不容易。当然,他们可以修改cryptotext,导致垃圾数据,但如果您担心这一点,请意识到如果他们对您的文件具有写入权限,他们就可以删除程序本身。

如果你想走得这么远,可以考虑将你的数据存储在一个已经实现认证和加密的完整数据库中。

答案 1 :(得分:0)

您需要将Windows资源添加到您的应用程序,然后更新它们的运行时间。

https://msdn.microsoft.com/en-us/library/ms648004%28v=vs.85%29.aspx