2012-07-08 66 views
2

我的问题可能看起来太奇怪了,但我想到了Windows休眠的事情,我想知道是否有办法休眠一个特定的进程或应用程序。例如:当窗口从正常关机/重新启动时,它将正常加载所有的启动程序,但除此之外,它将在关闭计算机之前加载具有其先前状态的特定程序。如何休眠应用程序?

我虽然有关于保留内存位置,并在计算机启动时恢复它,但有没有任何应用程序,在Windows环境中做到这一点?

+2

这不可能奏效,因为在内存中引用的共享内容已经移动了。 – SLaks 2012-07-08 17:08:54

+1

我能想到的最接近的事情是创建一个完整的进程转储,然后在重新启动后对其进行调试,而不是将其作为常规程序启动。这会让你存储程序的状态,但是你必须找出一种方法来让调试会话看起来像正常启动。如果可能的话。但是,一般来说,序列化可能是这种冬眠的正确机制。 – eran 2012-07-08 17:28:11

回答

5

这是行不通的。流程的状态几乎从未包含在流程本身中。 gui应用程序创建存储在与桌面相关的堆中的user32和gdi对象。它会调用影响窗口管理器状态的Windows。它使I/O调用导致驱动程序内部的代码运行。这又会影响内核池中的分配。把它打开的每个管道或rpc通道的麻烦与其他进程交谈。和剪贴板共享资源。

只能制作整个操作系统状态的快照。

+0

在Windows 8中,会有类似于OP所需的内容,但仅限于内核组件(驱动程序,内核)。当系统关闭的时候 - 与用户应用程序不同 - 只会休眠。 – Robert 2012-07-08 17:39:45

+0

非常感谢您提供这些信息,我现在意识到我真正需要的东西。 – 2012-07-08 17:59:19