【问题标题】:Creating an Application to Save Arbitrary Application State创建应用程序以保存任意应用程序状态
【发布时间】:2011-01-11 23:49:12
【问题描述】:

this SuperUser question。总而言之,VM 软件可以让您保存任意应用程序的状态(通过保存整个 VM 映像)。

是否可以为 Windows 编写一些软件来保存和重新加载任意应用程序状态?如果是这样(大概是这样),它会带来什么?

如果可能的话,我希望用 C# 等高级语言来实现这一点。我想如果我使用其他东西,我需要将内存寄存器(或者可能将整个应用程序内存块)转储到某个文件中,然后将其加载回某个地方以刷新状态。

那么我该如何构建这个东西呢?

【问题讨论】:

  • “是否有可能为 Windows 编写一些软件,允许您保存和重新加载任意应用程序状态?如果是这样(并且可能是这样),它需要什么?” - 是的,它被称为虚拟机!为什么 VM 不能满足您的需求,为什么需要保存应用程序状态?
  • 并且可以使用托管语言 - en.wikipedia.org/wiki/Java_PC 实现 VM。所以看起来问题已经解决了。
  • VM 在里面运行操作系统。我不是在寻找那种开销。假设有一些程序在退出时不会原生保存状态,我想保存状态——这就是我所追求的。当然,我可以使用简单的 Windows 并将我的“真实”计算机安装在虚拟机中;但这似乎是对资源(内存/CPU)的浪费。

标签: c# virtual-machine virtualization


【解决方案1】:

嗯,这不太可能发生,尤其是在 C# 中 - 几乎不可能解决托管代码中的低级要求。保存整个虚拟机的状态实际上比保存单个进程更容易,您所要做的就是转储整个机器内存并确保磁盘映像一致,考虑到虚拟化软件的功能,这相当简单。

恢复单个进程将意味着加载该进程引用的所有共享对象,包括该进程在内核空间中引用的任何对象,即文件/内存/互斥体/任何处理,并且整个机器/操作系统都不是虚拟的,这意味着深入了解 Windows 的内部......

我想说的是:虽然有可能,但付出的努力将是巨大的,而且可能不值得。

【讨论】:

  • 甚至不考虑互斥锁、线程、文件句柄等。我认为你是对的;工作比它的价值多。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-02-24
  • 2016-04-09
  • 1970-01-01
  • 2013-05-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多