如何在 Windows 上使用某些启动参数启动服务

如何在 Windows 上使用某些启动参数启动服务

如何使用特定参数启动服务?在另一个问题我已经发现

net start 服务名 blah

但如果我尝试这样做,net就会出现语法错误。

我究竟做错了什么?

编辑:澄清net start servicename一下,一切正常,但我需要将参数传递给服务。我可以services.msc通过填写启动参数在启动服务之前手动完成此操作。但我如何从脚本中执行此操作?

另一项编辑:抱歉,但我的问题是误导在我的测试中,我有更多的参数,这不是抱怨/blah net start。事实上,以斜线开头的任何内容都可以。所以net start servicename /blah有效,net start servicename blah无效。因为我需要net start servicename /foo bar,所以 就是bar问题所在。

答案1

sc 启动 fooservice arg1 arg2 ...

答案2

NET START据我所知,不允许您传递任意参数(似乎它们必须以 / 为前缀),我相信正确的方法是修改相应的注册表项并停止/启动服务。假设您的自定义服务名为 MyService:

[HKLM\SYSTEM\CurrentControlSet\Services\MyService]
"ImagePath":C:\Projects\MyService\bin\MyService.exe Parameter1 Parameter2

但实际上,更好的方法是将您的配置存储在服务知道的某个地方,例如注册表或文件系统,并读取您需要的任何值。正如您所见,自定义命令行比它应该的要麻烦一些。

如果这是.NET 开发的服务,你可以创建n文件系统上可执行文件的副本,并让每个副本自动从相应的 app.config 文件中获取参数。

听起来你可能已经超出了 Win32 的范围。由于这听起来像是自定义开发,因此任何其他提供的解决方案,虽然可能不是你的理想选择,但都可以正常工作并且是一种更安全的方法。

答案3

net start servicename /foo对于单个参数

net start servicename /"foo bar"对于字符串或参数列表

笔记:这个问题已经有 8 年的历史了,但我没有资格对已接受的答案发表评论,而且这仍然是 2018 年谷歌的最佳搜索结果,所以我想澄清一下现在关于问题最终编辑的工作情况。

答案4

您需要使用控制面板、服务中显示的实际服务名称。如果服务名称包含空格,则必须用引号括住服务名称。

要获取实际服务名称,只需在命令提示符中输入net start不带任何参数即可。它应该会为您提供所有跑步services,这样你就可以获取实际的服务名称。然后只需使用net start <servicename>

相关内容