2012-07-08 235 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