在程序关闭后,是否可以在内部保存变量并读/写入

Is it possible to save a variable internally and read/write to it after program shuts down?

本文关键字:变量 保存 在内部 写入 程序 是否      更新时间:2023-10-16

我一直在寻找一段时间,没有任何希望。基本上,我想知道是否可以保存变量并在程序退出后从可执行文件中读取。

我知道可以使用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"来存储这些变量的信息。