如何将Windows进程重置为以前的状态?

时间:2012-05-10 21:28:48

标签: c++ c windows winapi process

我有一个包含大量线程和大量复杂静态对象的大型应用程序。目前,当用户注销时,应用程序将重新启动以强制将应用程序重置为其初始状态。

此过程正在更改为Windows服务,因此无法再使用此方法。同样,当用户注销时,正确实现重置状态的方法代码太乱了。

我在想可能有一种方法可以将整个进程的初始内存写入磁盘,然后在请求重置时加载它,但这有很多问题,例如无法保存内核模式状态。 / p>

我需要一种方法(无论多么脏)将此进程重置为其初始状态,而不实际重启该进程。 winapi能为我提供任何能够实现这一目标的东西吗?

3 个答案:

答案 0 :(得分:3)

没有什么能阻止Windows服务在单独的进程中完成它的实际工作,尽管它确实有点混乱。因此,我建议您有两个可执行文件:父进程,作为服务实现,以及子进程,只要您需要重置应用程序的状态,它就可以退出(并由父进程重新启动)。

答案 1 :(得分:2)

Windows不会帮到你。您必须在自己的代码中解决问题,而不是寻找银弹。你说

  

代码也是   正确实施重置状态的方法很麻烦   当用户退出时。

你必须重新考虑,因为这是你唯一的选择。

答案 2 :(得分:0)

如果不重写everthing(您应该这样做),您可以将所有当前逻辑移动到工作线程中,然后服务可以在需要时生成,终止并重新生成该线程。服务流程本身会继续运行。