如何使用特定参数启动服务? 在另一个问题,我发现
净开始servicename等等
但是如果我尝试这个, net
抛出一个语法错误在我身上。
我究竟做错了什么?
编辑:澄清net start servicename
工作得很好,但我需要传递参数的服务。 我可以通过在启动服务之前填入start参数来在services.msc
手动执行此操作。 但是,我怎样才能从脚本中做到这一点?
另一个编辑:对不起,但我的问题是误导 。 在我的testing中,我有更多的参数,而不是/blah
net start
抱怨。 事实上, 任何以斜杠开头的东西都可以 。 所以net start servicename /blah
works, net start servicename blah
不起作用。 由于我需要net start servicename /foo bar
,这是问题的net start servicename /foo bar
。
sc开始fooservice arg1 arg2 ...
据我所知, NET START
不会允许你传递任意参数(它似乎必须以/为前缀),我相信正确的方法是修改相应的registry项并停止/启动服务。 假设您的自定义服务被称为MyService:
[HKLM\SYSTEM\CurrentControlSet\Services\MyService] "ImagePath":C:\Projects\MyService\bin\MyService.exe Parameter1 Parameter2
实际上,更好的方法是将您的configuration存储在服务器知道的地方,比如registry或文件系统,然后读取您需要的任何值。 正如你所看到的自定义命令行比应该更痛苦一点。
如果这是偶然的一个.NET开发的服务,你可以在你的文件系统上创buildn个可执行文件副本,并且每个副本都从相应的app.config文件中自动获取参数。
这听起来像你可能在Win32框外走得太远了。 由于这听起来像是自定义开发,所以其他提供的解决scheme,或许不是你理想的,可以正常工作,并且是更安全的方式。
使用net start
时, 每个参数前需要一个斜线。 还要确保引用有空格的参数。
net start servicename /param0 /"param1 with spaces" /"/param2_has_slash"
您需要使用控制面板,服务中显示的实际服务名称。 如果它包含空格,则必须在服务名称周围加引号。
要获得实际的服务名称,只需在命令提示符下键入net start
不带任何参数。 它应该给你一个所有正在运行的服务的列表,以便你可以得到实际的服务名称。 然后使用net start <servicename>
InstSrv和SrvAny可以帮助吗? 指南和链接