是否可以加载转储过程?

时间:2015-07-04 20:44:01

标签: c++ windows winapi assembly process

我想知道是否可以转储进程然后将其加载到内存中,因此它将处于与转储时相同的状态。 例如,我打开notepad.exe并在其中键入内容。我将其内存保存到一个文件中,然后我可以随时加载它,它有我之前输入的文本。 怎么办呢?

1 个答案:

答案 0 :(得分:0)

不,一般来说,如果不重写操作系统来支持它,这样做是不切实际的。虽然理论上可以保存进程的内存并将状态注册到文件并在新进程中恢复完全相同,但您仍然会遗漏某些内容。旧进程的句柄都不会有效。它不仅仅是文件句柄,还有窗口句柄之类的东西。在新进程中,旧进程的窗口都不会存在。您可以重新创建它们,但是如果没有操作系统的合作,就无法确保新创建的窗口的窗口句柄具有作为旧窗口句柄的值。

请注意,对于某些类型的句柄,Windows实际上会随机化部分句柄,这意味着即使您知道它们的分配顺序,您仍然无法获得旧的句柄值。