永久共享内存后进程终止winapi

时间:2018-04-18 23:39:06

标签: winapi shared-memory

我正在寻找像映射共享内存(CreateFileMapping())这样的东西,但是我希望虚拟文件在进程终止后继续存在,并且在我明确删除之前可以被其他进程读取。

该应用程序与存储密码有关,因此我不想使用物理文件或其他易于阅读的持久性方法(如注册表)。我想把数据泵入内存,保存到那里直到删除,并在需要时从中读取。它应该在重新启动时消失。

1 个答案:

答案 0 :(得分:3)

当进程终止时,操作系统会自动关闭任何尚未打开的内核句柄。因此,内存映射对象能够生存的唯一方法是,如果另一个进程具有对同一映射对象的打开句柄。当所有进程都关闭了映射对象的句柄时,它就会完全消失。

您可以考虑创建一个单独的服务应用程序以在后台运行并分配实际的内存对象,然后让进程在服务运行时共享内存对象。

否则,要真正分配一个在重新启动之前一直存在的内存块,无论谁分配它,您都可以使用RAM磁盘并将数据存储在RAM中的“文件”中,其中每个进程都可以打开“文件”需要的时候。当机器重新启动时,RAM被擦干净。

将数据存储在内存中并不比将其存储在文件或注册表中更安全。如果您担心安全问题,只需加密数据并在需要时解密即可。