如果在Windows 2003服务器上崩溃,如何自动启动程序?有时我的程序崩溃了,在Windows或设置中是否有办法可以设置?
答案 0 :(得分:9)
通常的做法是运行所谓的监护人流程。这是一个单独的进程,通常是一个服务,它监视主进程的状态。当监护人发现主要服务已经死亡时,它会重新产生它。
据我所知,没有内置的Windows功能可以为您执行此操作。
答案 1 :(得分:6)
注意:运行自循环bat文件可能很有用,但除非你知道自己在做什么,否则它们会造成各种各样的破坏。特别是如果你在启动时运行它们。你被警告了。
反正。我记得286天的事情,当时我和BAT文件玩了很多次。如果你写文件
yourprogram.exe
some other event
BAT文件将运行您的程序,然后暂停并在后台等待,直到程序退出。之后它将运行“其他一些事件”。如果你想一次运行多个东西,这曾经有点烦人,但这里实际上很有用。使用它,可以使它运行一个循环,一旦退出就重新启动程序(并重新运行bat文件)。将其与https://superuser.com/questions/62525/run-a-completly-hidden-batch-file结合使用,您甚至都不会看到它发生。
最终的BAT文件(本例中为“restart.bat”)类似于:
c:\[location]\yourprogram.exe
wscript "C:\[location]\invisible.vbs" "C:\[location]\restart.bat"
就是这样。使用第2行启动程序(通过任务启动或甚至只是启动文件夹),这应该解决您的问题:)
哦,如果你想要停止循环,只需重命名bat文件或将“//”放在两行前面,保存它,然后退出程序。
如果您运行的程序需要管理员权限,我找到的解决方案是使用psexec(http://technet.microsoft.com/en-us/sysinternals/bb897553.aspx)以提升的权限运行程序和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,可能是因为它因为缺少权限而无法运行程序“几十亿次或者其他东西:”
答案 2 :(得分:2)
我正在寻找类似的东西。有两种方法可以解决这个问题 - 您可以自己编写一个小脚本,也可以使用现有的脚本。
经过一些谷歌搜索后,我遇到了这个不错的list。这位博客编写了大约8个工具来自动重启已崩溃或已关闭的应用程序。
答案 3 :(得分:1)
不幸的是,Windows中没有任何设置可以在崩溃时自动重启常规程序。
您是否需要积极与应用程序的GUI交互?一些Service Wrappers(旨在将任何应用程序作为Windows服务运行)将监视您的应用程序并在失败时重新启动它,但请务必调查Session 0 Isolation以确保它不会妨碍
答案 4 :(得分:1)
您可以使用某些特殊应用,例如BDV SystemEvents或其他任何应用。它允许您指定在某个其他应用程序关闭时将启动的应用程序。指定与条件和操作相同的应用程序,您将获得预期的结果。
答案 5 :(得分:1)
您可以使用RegisterApplicationRestart.
“如果您注册重启并且应用程序遇到了 未处理的异常或没有响应,用户被提供 重启申请的机会;申请不是 未经用户同意自动重启。 “
对于无需用户干预的自动重启,还有RestartOnCrash。适用于所有Windows版本。
答案 6 :(得分:0)
有几种方法可以在Windows上创建进程主管/守护进程。 首先,是利用Windows命令行功能。创建一个蝙蝠文件:
@echo off
:start
start /w "your app to watch.exe"
goto start
start /w
将等待该过程退出。当进程崩溃并退出时,bat脚本将重新启动它。
另一种选择是使用免费的supervisor
工具https://github.com/chebum/Supervisor。它可以重新启动崩溃的应用程序,还可以一次监视两个或多个应用程序,并且在关闭主管窗口时将自动关闭这些应用程序。