如何使用特定参数启动服务?在另一个问题我已经发现
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>