22

How do I start a service with certain parameters? In another question I have found

net start servicename blah

but if I try this, net throws a syntax error at me.

What am I doing wrong?

Edit: To clarify net start servicename works just fine, but I need to pass parameters to the service. I can do this manually in services.msc by filling in a start parameter before starting the service. But how can I do this from a script?

Another edit: Sorry, but my question was misleading. In my tests, I had many more parameters and it's not the /blah net start complains about. In fact, anything starting with a slash is fine. So net start servicename /blah works, net start servicename blah doesn't work. Since I need net start servicename /foo bar, it's the bar that is the problem.

6 Answers 6

32
sc start fooservice arg1 arg2 ...
2
  • I have no idea how I managed to miss your answer back then, but I'm certainly very glad I found it now (by accident). This works like a charm - even with parameters that don't start with /. Thanks a lot!
    – sbi
    Jun 2, 2010 at 15:43
  • It's 2018 and neither "sc start ..." nor "net start ..." seems to work in Windows 10. Editing the registry does work serverfault.com/questions/507561/…
    – MarcH
    Jun 23, 2018 at 3:22
8

NET START won't allow you to pass arbitrary parameters as far as I know (it appears they have to be prefixed with a /), I believe the correct way is to modify the appropriate registry key and stop/start the service. Assuming your custom service is called MyService:

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

Really though, a better way is to store your configuration somewhere the service knows about, like perhaps the registry or file system, and read whatever values you need. As you can see customizing the command line is a bit more painful than it should be.

If this is by chance a .NET developed service, you could create n copies of the executable on your file system, and have each automatically get the parameters from the appropriate app.config file.

It sounds like you may have stepped too far outside the Win32 box. Since this sounds like custom development any of the other offered solutions, while perhaps not your ideal, will work correctly and are a safer way to go.

3
  • Ugh. The service takes a configuration file. It either uses a default file name or one passed to it. Since I need two different instances of the service running, I need to point them at different configuration files. Having to fiddle with the registry seems a very ugly hack. Is there really no other way than that (and the GUI)?
    – sbi
    May 19, 2010 at 14:03
  • Goyuix, see my edited question. net start does accept parameters, but only those starting with a /.
    – sbi
    May 19, 2010 at 14:43
  • Goyuix, I now use sc.exe. See grawity's answer (which I somehow managed to miss back then).
    – sbi
    Jun 2, 2010 at 15:45
5

net start servicename /foo for a single argument

net start servicename /"foo bar" for a string or list of args

Note: This question is 8 years old but I don't have the reputation to comment on the accepted answer and this is still a top google result in 2018 so I wanted to clarify what was working now in regards to the questions final edit.

1
  • Note: I gave you an upvote, so now your answer is on 4th position, and you got some rep bump. Have fun here! :-)
    – sbi
    Dec 12, 2018 at 19:39
4

You need a slash before each parameter when using net start. Also make sure to quote parameters that have spaces.

net start servicename /param0 /"param1 with spaces" /"/param2_has_slash"
2
  • Look again at my problem. I do have parameters that (have to) start with a slash, too. How would I pass those then?
    – sbi
    Mar 19, 2012 at 11:13
  • Try this: net start servicename /"/foo" /bar
    – Even Mien
    Mar 27, 2012 at 19:51
1

You need to use the actual service name as it appears in control panel, services. If it contains spaces, you must put quotes around the service name.

To get the actual service name just type in net start without any parameters on the command prompt. It should give you a list of all the running services so you can get the actual service name. Then just use net start <servicename>

1
  • Robert, it's a service of mine which I install and then start in a script. I do net start "my-service-name" just fine. It's net start "my-service-name" /blah which gives me an error message. I've also tried net start "my-service-name" -blah and this, too, is a syntax error.
    – sbi
    May 19, 2010 at 13:35
0

Could InstSrv and SrvAny assist in this? Guide and Links

1
  • I have looked at it briefly and I don't think so. (Please correct me if I'm wrong.) I have a real service executable up and running just fine. It's just that (for tests) I need to install and start it from a script, and I need to pass parameters to the service.
    – sbi
    May 19, 2010 at 13:59

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .