Windows services Windows服务项目是否维护另一个可执行文件?

Windows services Windows服务项目是否维护另一个可执行文件?,windows-services,nested,Windows Services,Nested,我有一个64位的windows服务项目,现在我需要一个32位的可执行文件,它应该具有与windows服务相同的生命周期。由于64位应用程序域无法加载32位dll,因此我必须在64位windows服务的OnStart()函数中启动此32位可执行文件。我想知道如何维护这个32位可执行文件的生命周期?基本上,我现在做的是在OnStart()中启动可执行文件,并在OnStop()中退出它 但是我现在关注的是,如果这个32位可执行(进程)在Windows服务的运行中被杀死或崩溃,该怎么办?我需要重新启动它

我有一个64位的windows服务项目,现在我需要一个32位的可执行文件,它应该具有与windows服务相同的生命周期。由于64位应用程序域无法加载32位dll,因此我必须在64位windows服务的OnStart()函数中启动此32位可执行文件。我想知道如何维护这个32位可执行文件的生命周期?基本上,我现在做的是在OnStart()中启动可执行文件,并在OnStop()中退出它

但是我现在关注的是,如果这个32位可执行(进程)在Windows服务的运行中被杀死或崩溃,该怎么办?我需要重新启动它。在windows服务中是否有一个位置或功能,在那里我可以监视其他进程,并且每当这些进程被终止时,我可以重新启动它们?或者我可以想到嵌套的windows服务,但是我找不到任何关于这个主题的有用材料


谢谢你的帮助

我个人要做的是将这两个可执行文件配置为Windows服务,这样您就可以按照预期的方式使用ServiceController,以确保程序正确运行。您还可以将一项服务设置为另一项服务的先决条件

我不建议从服务启动应用程序,因为这会给您带来相当大的困难

例如,应用程序将在哪个用户下运行

沿着ServiceController路线,让这两个部分都成为服务,这绝对是我的首选路线


从设计的角度来看,一个本应一直运行且不需要界面的可执行文件实际上应该是一个Windows服务,这样操作系统才能给出正确的调度,并且在出现问题时能够自动重新启动程序。

那么您有一个依赖于应用程序的服务吗?这是一个糟糕的设计…如果没有用户登录怎么办?另一方面,如果他们都是服务,您可以使用ServiceController检查另一个的状态,甚至启动/停止/重新启动它。这是因为所有服务都将作为行政特权。@AdamKing感谢您的回复。到底为什么这是个坏主意?我记得我读过一些关于在没有Windows登录的情况下启动可执行文件的文章。我的32位可执行文件不需要任何交互。但无论如何,我基本上可以自由决定32位进程是应用程序还是Windows服务。因此,我也将检查ServiceController。在不登录的情况下启动应用程序可能会导致问题,存在各种问题,例如权限、需要先运行的登录脚本、防病毒问题等。