安装后设置服务依赖项

Den*_*nis 6 c# database windows-services

我有一个作为Windows服务运行的应用程序.它将各种设置存储在数据库中,在服务启动时查找这些设置.我构建了服务以支持各种类型的数据库(SQL Server,Oracle,MySQL等).通常,最终用户选择将软件配置为使用SQL Server(他们可以使用连接字符串简单地修改配置文件并重新启动服务).问题是当他们的机器启动时,经常在我的服务之后启动SQL Server,因此我的服务在启动时出错,因为它无法连接到数据库.我知道我可以为我的服务指定依赖项,以帮助指导Windows服务管理器在我之前启动相应的服务.但是,我不知道在安装时(当我的服务注册时)要依赖哪些服务,因为用户以后可以更改数据库.

所以我的问题是:用户是否有办法根据他们使用的数据库手动指示服务依赖性?如果没有,我应该采取什么样的正确设计方法?我已经考虑过尝试做一些事情,比如在服务启动之后等待30秒才连接到数据库,但由于各种原因,这看起来真的很不稳定.我也考虑过"懒洋洋地"连接到数据库; 问题是我在启动时需要立即连接,因为数据库包含我的服务首次启动时需要的各种重要信息.有任何想法吗?

Joh*_*ock 3

丹尼斯你要找的是SC.exe。这是一个命令行工具,用户可以使用它来配置服务。

sc [Servername] Command Servicename [Optionname= Optionvalue...]
Run Code Online (Sandbox Code Playgroud)

更具体地说,你想使用

sc [ServerName] config ServiceName depend=servicetoDependOn
Run Code Online (Sandbox Code Playgroud)

这是 SC.EXE 的类似命令选项的链接 http://msdn.microsoft.com/en-us/library/ms810435.aspx