【问题标题】:How to install a windows service from command line specifying name and description?如何从指定名称和描述的命令行安装 Windows 服务?
【发布时间】:2013-08-29 10:35:44
【问题描述】:

我使用 Delphi 为客户端服务器应用程序创建了一个 Windows 服务。

要安装它,我使用

c:\Test\MyService.exe /install (or /uninstall)

这将安装服务并在 Windows 服务中列出“MyService”名称和空描述。

如何定义不同的名称并插入描述(运行services.msc时可见)?

注意: 我需要这个,因为在同一台机器上我需要安装更多次相同的服务(每个数据库 1 个)。

目前我发现的唯一解决方法是重命名服务 exe,但我更愿意找到正确的命令行方式来执行此操作(因为我是从 ShellExecute 执行此操作的)。

更新: 不知何故,我会寻找类似的东西(这当然只是为了解释原因!-InstallService.exe 是我刚刚发明的名字):

InstallService.exe c:\Test\MyService.exe /install /name='MyService1' 
  /description='This is my service for database 1'

但也可以使用更紧凑的版本,例如:

c:\Test\MyService.exe /install /name='MyService1' 
  /description='This is my service for database 1'

【问题讨论】:

  • +1 我不明白为什么这个问题值得一票否决
  • 请注意,当使用与Name 属性不同的名称创建服务时,Delphi TService 无法启动服务。有关问题的描述和解决方法,请参阅 Service does not start
  • @Jerry - 这是一个不错的问题,但似乎离题了。 Perhpas可以解释否决票。超级用户更适合“我如何使用这个命令”的问题。

标签: windows-services shellexecute


【解决方案1】:

Windows 已经附带了您需要的实用程序,即sc create

>sc 创建/? 描述: 在注册表和服务数据库中创建服务条目。 用法: sc 创建 [服务名称] [binPath= ] ... 选项: 注意:选项名称包括等号。 等号和值之间需要一个空格。 类型= (默认 = 拥有) 开始= (默认 = 需求) 错误= (默认 = 正常) 二进制路径= 组= 标签= 依赖= 对象= (默认 = 本地系统) 显示名称= 密码=

这将创建服务并允许您指定名称和显示名称。

修改描述需要sc description:

>sc 描述 /? 描述: 设置服务的描述字符串。 用法: sc 描述 [服务名称] [描述]

另一个明显的选择是将命令行解析构建到您的服务中。这很容易做到。只需为服务的BeforeInstall 和/或AfterInstall 事件分配处理程序并在那里处理开关。

【讨论】:

  • 非常感谢。我从命令行尝试了所有方法,它按预期工作。它也适用于相同的 exe 安装次数(当然是不同的 [服务名称]。
  • 此外sc delete [service name] 关闭循环
  • 容易忽略的一点(即使是在sc的描述中)是binPath=后面需要一个空格,所以不能做binPath=mypath,而必须做binPath=mypath
猜你喜欢
  • 2023-03-17
  • 2016-12-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-05
  • 1970-01-01
  • 2018-10-26
  • 1970-01-01
相关资源
最近更新 更多