如果程序在Windows中崩溃,如何自动重新启动程序?

如果程序在Windows中崩溃,如何自动重新启动程序?,windows,windows-server-2003,Windows,Windows Server 2003,如果程序在windows 2003 server上崩溃,如何自动启动程序?有时我的程序会崩溃,在windows或设置中有什么方法可以设置吗?通常的方法是运行所谓的守护进程。这是一个单独的进程,通常是一个服务,用于监视主进程的状态。当守护者检测到主服务已死亡时,它会重新生成主服务 据我所知,没有内置的Windows功能可以为您执行此操作。不幸的是,Windows中没有设置可以在常规程序崩溃时自动重新启动该程序 您是否需要主动与应用程序的GUI交互?某些应用程序(设计用于将任何应用程序作为Windo

如果程序在windows 2003 server上崩溃,如何自动启动程序?有时我的程序会崩溃,在windows或设置中有什么方法可以设置吗?

通常的方法是运行所谓的守护进程。这是一个单独的进程,通常是一个服务,用于监视主进程的状态。当守护者检测到主服务已死亡时,它会重新生成主服务


据我所知,没有内置的Windows功能可以为您执行此操作。

不幸的是,Windows中没有设置可以在常规程序崩溃时自动重新启动该程序


您是否需要主动与应用程序的GUI交互?某些应用程序(设计用于将任何应用程序作为Windows服务运行)将监视您的应用程序,并在应用程序出现故障时重新启动,但请务必进行调查,以确保它不会妨碍您。

您可以使用一些特殊的应用程序,如或任何其他应用程序。它允许您指定当其他应用程序关闭时将启动的应用程序。将相同的应用程序指定为条件和操作,您将获得预期的结果。

注意:运行自循环bat文件可能很有用,但除非您知道自己在做什么,否则它们可能会造成各种破坏。尤其是在启动时运行它们时。你已经被警告了

无论如何。我只记得我286天的一些事情,那时我经常玩蝙蝠文件。如果你写这个文件

yourprogram.exe
some other event
BAT文件将运行您的程序,然后在后台暂停并等待,直到程序退出。之后,它将运行“其他事件”。如果你想一次运行多个东西,这会让你很恼火,但在这里它确实很有用。使用这种方法,可以让它运行一个循环,在程序退出后立即重新启动程序(并重新运行bat文件)。再加上这一点,你将永远看不到它的发生

最后一个BAT文件(本例中为“restart.BAT”)将类似于:

c:\[location]\yourprogram.exe
wscript "C:\[location]\invisible.vbs" "C:\[location]\restart.bat"
就这样。用第2行启动程序(通过任务启动,甚至只是启动文件夹),这应该可以解决您的问题:)

哦,如果你想停止循环,只需重命名bat文件或在两行前面加“/”,保存它,然后退出程序

如果您正在运行的程序需要管理员权限,我找到的解决方案是使用psexec()以提升的权限运行程序和bat。在这种情况下,蝙蝠看起来像:

c:\[location]\psexec -h c:\[location]\yourprogram.exe
c:\[location]\psexec -h wscript "C:\[location]\invisible.vbs" "C:\[location]\restart.bat"

然后以管理员身份运行bat,或者以提升的权限从任务调度器运行第二行(不含psexec部分)。注意:以普通用户的身份运行它并在UAC提示符上单击“否”会给我一个BSOD,可能是因为它循环了数十亿次“由于缺乏特权而无法运行程序”之类的内容:)

我正在寻找类似的内容。有两种方法可以处理这个问题——要么你自己编写一个小脚本,要么使用已经存在的东西

在谷歌搜索之后,我发现了这个不错的。这位博主已经编译了大约8个工具来自动重启崩溃或关闭的应用程序。

您可以使用

“如果您注册重新启动,并且应用程序遇到 未处理的异常或没有响应,将向用户提供 重新启动应用程序的机会;应用程序不可用 未经用户同意自动重新启动。“


对于无需用户干预的自动重启,还有。适用于所有Windows版本。

在Windows上创建进程管理器/监护人进程有多种方法。 首先,是利用windows命令行功能。创建bat文件:

@echo off
:start
start /w "your app to watch.exe"
goto start
start/w
将等待进程退出。当进程崩溃并退出时,bat脚本将重新启动它


另一种选择是使用免费的
supervisor
工具。它允许重新启动崩溃的应用程序,还允许同时监视两个或多个应用程序,并在主管窗口关闭时自动关闭这些应用程序。

什么样的程序?windows服务或常规应用程序?嗯,“有时我的程序会崩溃”。似乎更好的方法是找出程序崩溃的原因并修复它。创可贴是伟大的,因为身体是自愈的。你的程序不是这样。你当然想让你的程序不崩溃。这是一个值得奋斗的伟大理想。但即使是最强大的程序也可能偶尔崩溃。如果您处于服务器环境中,则在崩溃发生时重新启动非常有意义。您仍然可以记录崩溃并尝试消除它们,但如果每次崩溃都不延长停机时间,您的用户会更高兴。服务的内置功能,恢复选项卡。我认为使用“程序”一词意味着问题涉及桌面程序。不,服务是一个真正的exe。只是一些让用户控制的约定。服务在不同的会话中运行,等等。当然,它们和其他任何可执行文件一样都是可执行文件。如果“程序”是一项服务,那么毫无疑问,恢复设置是一种方法。一个应该一直运行的“程序”在任何情况下都应该是一个服务。不幸的是,它是一个程序而不是一个服务。所以我需要帮助来重新启动这个程序。有没有第三方可以做这项工作?好主意。您甚至可以避免使用批处理文件和invisible.vbs,而是使用一个VBScript来执行此操作,例如:“保持计算器处于打开状态”Set objShell=WScript.CreateObject(“WScript.Shell”)objShell.run“calc.exe”,1,true objShell.run(WScript.ScriptFullName)它要求您自己编写一个c#程序,如果这个RestartOnCrash.cs本身崩溃了怎么办?我必须对这一行做一点小的修改才能使它正常工作:
START/WAIT”““你的app to watch.exe”
START命令语法使用引号中的第一个字符串作为