Назад | Перейти на главную страницу

Как запустить службу с определенными параметрами запуска в Windows

Как запустить службу с определенными параметрами? В Другой вопрос я нашел

net start servicename blah

но если я попробую это, net выдает мне синтаксическую ошибку.

Что я делаю не так?

Редактировать: Чтобы уточнить net start servicename работает нормально, но мне нужно передать параметры службе. Я могу сделать это вручную в services.msc заполнив параметр запуска перед запуском службы. Но как это сделать из сценария?

Другое редактирование: Извините, но мой вопрос был вводящий в заблуждение. В моих тестах у меня было намного больше параметров, и это не /blah net start жалуется на. По факту, все, что начинается с косой черты, нормально. Так net start servicename /blah работает, net start servicename blah не работает. Поскольку мне нужно net start servicename /foo bar, это bar это проблема.

sc start fooservice arg1 arg2 ...

NET START не позволит вам передавать произвольные параметры, насколько я знаю (похоже, они должны иметь префикс /), я считаю, что правильный способ - изменить соответствующий ключ реестра и остановить / запустить службу. Предполагая, что ваша настраиваемая служба называется MyService:

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

На самом деле, лучший способ - сохранить вашу конфигурацию в том месте, о котором служба знает, например, в реестре или файловой системе, и прочитать любые нужные вам значения. Как видите, настройка командной строки немного сложнее, чем должна быть.

Если это случайно разработанная служба .NET, вы можете создать п копии исполняемого файла в вашей файловой системе, и каждая из них автоматически получает параметры из соответствующего файла app.config.

Похоже, вы зашли слишком далеко за рамки Win32. Поскольку это звучит как индивидуальная разработка, любые другие предлагаемые решения, хотя, возможно, и не ваш идеал, будут работать правильно и будут более безопасным способом.

Вам нужна косая черта перед каждый параметр при использовании net start. Также не забудьте указать в кавычках параметры, в которых есть пробелы.

net start servicename /param0 /"param1 with spaces" /"/param2_has_slash"

net start servicename /foo для единственного аргумента

net start servicename /"foo bar" для строки или списка аргументов

Заметка: Этому вопросу 8 лет, но у меня нет репутации, чтобы комментировать принятый ответ, и это по-прежнему лучший результат Google в 2018 году, поэтому я хотел уточнить, что сейчас работает в отношении окончательного редактирования вопросов.

Вам необходимо использовать фактическое имя службы, которое отображается в панели управления services. Если он содержит пробелы, вы должны заключить имя службы в кавычки.

Чтобы получить фактическое имя службы, просто введите net start без каких-либо параметров в командной строке. Он должен дать вам список всех Бег services, чтобы вы могли получить фактическое название службы. Тогда просто используйте net start <servicename>

Могут ли в этом помочь InstSrv и SrvAny? Руководство и ссылки