如何使用户可变常量?

How to make a user changeable constant?

我想制作一个简单的控制台应用程序,它将执行一些我经常在学校使用的有用功能(检查数字是否为素数、写出数字的因子、求解二次方程等式等).

但在制作过程中,我决定添加一些有关该应用程序的详细信息以使用户界面更漂亮:写下应用程序的名称、版本...

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

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

我想将所有这些额外信息保存在某个文件中,然后每次都从中读取它们,但是 如果文件被更改,那么数据将会被更改,我不希望这样我只想用管理员密码更改数据。我也认为我可以加密这些信息,但仍然可以轻松更改。

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

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

现在有人知道这是否可以做到吗?如何做到?

我正在用 C++ 编写此应用程序。

提前致谢

您需要向您的应用程序添加 Windows 资源,然后 运行 次更新它们。

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

is there a way to somehow change the password and other extra data so the program saves the new values permanently?

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

I thought to save all those extra information in some file

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

if the file is changed then the data will be to and I don't want that. I want to change the data only with an admin password.

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

I also thought I can encrypt those information but still thay can be easely changed.

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

如果您想走得更远,请考虑将您的数据存储在成熟的数据库中,该数据库已经实施了身份验证和加密。