Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows服务已启动,但进程在任务管理器中消失_Windows_Windows Services - Fatal编程技术网

Windows服务已启动,但进程在任务管理器中消失

Windows服务已启动,但进程在任务管理器中消失,windows,windows-services,Windows,Windows Services,我编写了一个Windows服务,它在Windows 2000计算机上运行。有时,此服务的可执行文件已死亡,但Windows服务仍在服务管理器中列为“已启动”。在这种情况下,为此服务定义的重新启动行为不会生效 当然,这个过程需要调试,但我现在正在寻找解决方法 我怎样才能避免这种情况?Windows 2000中的服务管理器如何确定Windows 2000进程是否仍在启动?这可能意味着服务崩溃。IIRC,当服务进程异常终止时,旧版本的windows并不总是能够恢复。但那是多年前的事了,我的记忆可能有问

我编写了一个Windows服务,它在Windows 2000计算机上运行。有时,此服务的可执行文件已死亡,但Windows服务仍在服务管理器中列为“已启动”。在这种情况下,为此服务定义的重新启动行为不会生效

当然,这个过程需要调试,但我现在正在寻找解决方法


我怎样才能避免这种情况?Windows 2000中的服务管理器如何确定Windows 2000进程是否仍在启动?

这可能意味着服务崩溃。IIRC,当服务进程异常终止时,旧版本的windows并不总是能够恢复。但那是多年前的事了,我的记忆可能有问题


避免这种情况的最佳方法是找出导致您的服务崩溃的原因并加以修复。

虽然Larry作为Microsoft员工可能比其他人都清楚,但我敢说您应该尝试一下
ChangeServiceConfig2
服务配置失败操作。我曾经使用过一个遗留服务,在我进行重构之前,它经常崩溃。我的前辈们选择的补救方法是使用failure操作来调用一个程序(在系统下运行),然后该程序将重新启动服务,就好像什么都没有发生一样

所有这些只有在您的服务在其自己的流程中运行时才起作用,根据您描述它的方式,我假设这一点。如果您的服务是在DLL中实现的,这将不起作用


但我完全同意拉里的观点,你应该调查并解决问题,而不是试图掩盖它。如上所述,我修复了有问题的服务,它没有崩溃或很少崩溃,每个人都对该解决方案感到高兴;)

拉里:+1。您是否知道发送
服务\u控制\u查询
是否是向SCM指出相关服务进程已停止的一种方式?我不认为works-ChangeServiceConfig2会告诉服务控制器重新启动服务(这是一件非常好的事情)。但它依赖于服务控制器知道服务已崩溃。