Windows桌面程序保存您的计算机会话 - 基于程序崩溃时的恢复会话[关闭]

Posted

技术标签:

【中文标题】Windows桌面程序保存您的计算机会话 - 基于程序崩溃时的恢复会话[关闭]【英文标题】:Windows desktop program to save your computer session - based on restore session when programs crash [closed] 【发布时间】:2020-09-06 01:25:30 【问题描述】:

我想创建一个 Windows 桌面程序,让您可以保存您的计算机会话以便以后能够恢复它。

我知道应该可以这样做,因为 chrome 有一个恢复会话,它可以恢复崩溃前打开的选项卡 - 微软办公程序有自动保存功能,它可以在崩溃前恢复你的会话 - 等等 - 所以在某个地方计算机有一个功能,它能够拍摄会话的快照并恢复它。

我认为这个程序可以通过在会话时从任务管理器获取信息然后从那里恢复来实现。

我不知道我需要做什么才能让这样的程序正常工作。

哪种编程语言最适合完成这项工作。我是 python 的初学者,但听说 C/C++/C# 比 python 可以更好地控制计算机进程。

通过查看正在运行的程序/进程的任务管理器并从那里保存有关会话的信息或恢复会话/自动保存功能以另一种方式工作,认为这种类型的程序可以工作也是正确的。

谢谢。

【问题讨论】:

你在谈论一个相当复杂的事情。您只是想重新启动之前运行的相同程序,还是希望这些程序处于与崩溃前完全相同的状态? 恢复程序的状态是微不足道的......恢复整个计算机的状态虽然不是不可能,但不是很可行 这是一项巨大且艰巨的任务。这不是 *** 问题的用途——它们是针对具体专注的关于某件事情的问题,这些问题可以用基于事实的简短答案来回答。这不是这样的问题。 欢迎来到 Stack Overflow。我认为,也许,这个问题对于这个论坛来说有点太宽泛了。 Stack Overflow 更适合回答关于编程的有针对性的 问题,而不是关于“我如何制作我的程序”之类的广泛问题。一旦您启动程序并遇到特定错误或代码问题,请回来查看我们! 保存/恢复会话功能各不相同。 Chrome 拥有它是因为应用程序的开发人员实现了它。 Office 拥有它,因为 Office 的开发人员实现了它。没有系统定义的方法来保存和恢复任意程序的运行状态,并且在系统中使用所有系统服务和加载的驱动程序这样做是非常困难的。 【参考方案1】:

您的主要假设是错误的 - 系统中没有功能可以在崩溃时保存和恢复正在运行的程序的状态。 Office 通过定期在后台保存文档副本来实现这一点,允许您从 Office 为您保存的卷影副本中恢复。 Chrome 通过浏览器历史跟踪器实现了这一点,并且知道打开了哪些标签比跟踪其中的所有内容要简单得多。

将这个概念扩展到整个系统是……非常困难的。您必须编写代码来保存系统上所有正在执行的程序的操作状态,而不保存崩溃程序的状态,因为这会导致您的还原导致系统崩溃。这需要确定导致系统崩溃的原因,这需要解决停机问题,而这是不可能的。

如果您希望为正在构建的单个应用程序实现此行为,请特别为该应用程序实现它。如果您希望整个系统都使用此功能……您就是 SOL。

【讨论】:

点个赞。具有三重冗余和从大多数崩溃中恢复的能力的高可用性系统花费数百万美元是有原因的。 见鬼,我的工作是为医院、机场和大型建筑构建工业自动化系统,而我们的重点只是一开始就不会崩溃。如果你崩溃了,就是这样。重启就好,下次尽量不要。 我从事医学影像工作,我们的重点是相同的。只是不要崩溃。如果你这样做;游戏结束,从头开始 - 你永远不能希望以相同的状态重新开始。 更不用说 - 如果您的状态导致崩溃怎么办? 仍然是一个非常困难的前景。你所有的网络连接都是短暂的,所以任何依赖于网络状态的东西几乎肯定会在恢复时崩溃。任何磁盘事务都不能进行,否则磁盘上的数据将被损坏。如果一个程序正在等待一个实时计时器到期,它会在恢复完成后立即到期,如果增量太大,可能会导致计时失败。如果程序在 x86/64 机器上使用 rdtsc,时间可能会出现倒流,导致极其奇怪或不正确的行为。

以上是关于Windows桌面程序保存您的计算机会话 - 基于程序崩溃时的恢复会话[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

windows内核为啥不是文件

如何使用苹果电脑远程连接Windows电脑?

windows2022远程桌面连接管理员已结束会话解决方法

windows2022远程桌面连接管理员已结束会话解决方法

windows2022远程桌面连接管理员已结束会话解决方法

windows服务器如何开启远程桌面