在程序关闭后,是否可以在内部保存变量并读/写入
Is it possible to save a variable internally and read/write to it after program shuts down?
我一直在寻找一段时间,没有任何希望。基本上,我想知道是否可以保存变量并在程序退出后从可执行文件中读取。
我知道可以使用FSTREAM函数将变量存储在外部文件中,但是我正在寻找一种像.exe中的内部存储的方法。
string l;
cin >> l;
// function to save it internally.....
预先感谢O.O
这有一些暗示,说明为什么这不是一个好主意。
- 这不比使用另一个文件更好。
- 您无法访问大量的内存作为"所有我的数据"并将其写入文件中,因此您必须正确地序列化/不正确化。一旦有可用的代码,它实际上是更多的与复杂的文件格式(无论是精灵或PE)一起工作,而不是写入空文件。
- 实际上更糟。
- 编写数据时的错误可能使您的程序无法正常工作。
- 多个用户不能每个用户都有自己的数据。
- 您的可执行文件通常不写。
- 在基于UNIX的系统上,二进制文件通常安装到系统目录上,而普通用户根本无法更改它们。
- 即使作为root运行,系统分区的读取并不少见(我自己的设置已将
/
安装为仅读取的)。 - 在Windows Systems上,尽管使用Admin权利运行更常见,但它不是通用的,无论如何,运行程序的二进制文件已锁定。
- 即使您设法解决所有这些方法,也可以防止数据可移植性。
- 您的程序和数据的安装和更新已消失。
- 无法备份您的数据并以后还原数据(可能在另一个系统上)。
- 那几天修改可执行文件的唯一程序是恶意软件。因此,拦截可执行的修改程序并将其关闭是反恶意软件的最基本功能之一。
- 按照这些行,在实现签名二进制或任何类型的信任系统的系统上,您的修改后的二进制不会通过签名测试。
因此,您的程序和用户体验中的许多怪癖,许多复杂的解决方法(需要请求特殊的权限,棘手的保存和备份,很可能的数据丢失)。另一方面,简单的保存到数据文件易于实现和用户友好。
@drescherjm和@peter在评论中提到的,这种练习就是安全软件所寻求的,因此它并不是最明亮的想法。我不太了解您的意图,但是如果您试图在程序中实施共同的路线,那么您可以做的事情:
- 创建一个静态变量,例如
static int state=0;
,并使用该变量来实现少数程序规模的共同调整。 - 使用文件,例如" sys_status.dat"来存储这些变量的信息。
相关文章:
- 在全局变量中保存类的实例以重新创建类(创建"backup")
- 无法通过头文件保存变量的值
- 一个变量的输入值也会保存到另一个变量中
- 是否可以在C++变量中保存多种类型的枚举?
- 如何在 c++ 中创建一个可以将自身保存为变量的类?
- 可视化C++从文件中保存/读取多个变量
- 将数据从 SQLite 数据库保存到变量中
- C++我应该用什么来保存格式化为字符串变量(如sprintf())的文件
- 指向结构变量的指针未保存到eeprom
- (C++)for循环中的空初始语句是否保存所有编译器中变量的上一次初始化
- 让类方法为每个实例保存不同的静态变量
- 在没有外部文件的情况下在应用会话之间保存变量
- 将子类实例保存在父类型变量中并通过父变量使用 Child 函数?
- 将局部变量保存到全局向量中,为什么离开局部范围后可以得到这些局部变量?
- 将特征数组行保存在变量中
- 将枚举类变量保存到JSON中
- 局部变量保存相同的内存地址
- 类中的变量保存了错误的值
- C++ 我无法使用 fstream 变量保存到文件
- 无法将float转换为float*错误,但我将变量保存为数组