首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何获得请求重新启动的服务?

如何获得请求重新启动的服务?
EN

Stack Overflow用户
提问于 2013-03-05 03:31:07
回答 2查看 75关注 0票数 2

如何让Windows服务请求重新启动?我知道Environment.Exit(1)与恢复选项服务设置有关,但是如果服务真的出错了怎么办?

背景:

我们有许多Windows服务,它们使用自治组件作为SOA体系结构的一部分。我们希望在自治组件更新时重新启动服务,但我们不希望每天只重新启动两个(发行版),如果出现真正的错误,我们也不希望服务无限期地重新启动。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-03-05 21:47:33

我们绕过它做了这个:

代码语言:javascript
复制
using System.Diagnostics;

Process.Start("cmd", "/c net stop \"Service1\" && net start \"Service1\"");

似乎Process.Start()没有创建子进程,或者当父进程死亡时子进程没有被终止。

注意,进程运行的用户必须拥有启动和停止进程的权限。

票数 1
EN

Stack Overflow用户

发布于 2013-03-05 05:02:16

我已经创建了一些使用这种技术的自更新服务。我发现依赖恢复选项并不理想,因为它通常会让sysadmins感到您的服务正在他们的机器上爆炸(写信给事件日志,认为服务恢复是由于意外的服务停止而发生的)。

在我的例子中,我所做的是启动一个精心编制的可执行文件,这个帐户是在服务安装过程中创建的。该帐户被拒绝登录权限,并且仅控制我们的特定服务(使用icacals或等效于授予服务控制权限)。可执行文件被启动,它使用许多预定义的OnCustomCommand 服务命令与服务进行通信,这些服务命令告诉服务它已经更新,它需要完成它的操作,并尽快关闭。可执行文件在给定的时间内等待,一旦服务停止,它就在二进制文件周围移动,并执行许多其他自定义步骤,然后启动服务,然后退出。

我相信有更干净的方法来做这件事,但是在找了几个小时之后没有想出更干净的方法,我决定这在我们的情况下是可行的。这些年来,我在大量计算机上都没有遇到任何问题,除了由于管理员干扰了运行可执行文件的用户帐户而偶尔出现的权限问题。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15215325

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档