Как запустить сервис с определенными параметрами? В другом вопросе я нашел
net start имя_службы бла
но если я попробую это, net
выдает синтаксическую ошибку на меня.
Что я делаю неправильно?
Изменить: Чтобы уточнитьnet start servicename
работает просто отлично, но мне нужно передать параметры в сервис. Я могу сделать это вручнуюservices.msc
, заполнив параметр start перед запуском сервиса. Но как я могу сделать это из сценария?
Другое редактирование: Извините, но мой вопрос вводил в заблуждение . В моих тестах у меня было намного больше параметров, и это не/blah
net start
жалобы. На самом деле, все , что начинается с косой черты, хорошо . Такnet start servicename /blah
работает,net start servicename blah
не работает. Так как мне нужноnet start servicename /foo bar
, этоbar
проблема.
/
. Большое спасибо!NET START
насколько я знаю, я не позволю вам передавать произвольные параметры (похоже, они должны начинаться с префикса /), я считаю, что правильным способом является изменение соответствующего ключа реестра и остановка / запуск службы. Предполагая, что ваш пользовательский сервис называется MyService:На самом деле, лучший способ - хранить конфигурацию там, где знает служба, например, в реестре или файловой системе, и читать любые значения, которые вам нужны. Как видите, настройка командной строки немного сложнее, чем должна быть.
Если это случайно разработанная служба .NET, вы можете создать n копий исполняемого файла в вашей файловой системе, и каждая из них автоматически получит параметры из соответствующего файла app.config.
Похоже, вы, возможно, зашли слишком далеко за пределы коробки Win32. Так как это звучит как разработка на заказ, любое из предложенных решений, хотя, возможно, и не ваше идеальное решение, будет работать правильно и является более безопасным способом.
источник
net start
действительно принимает параметры, но только те , которые начинаются с/
.sc.exe
. См. Ответ Гравити (который мне как-то удалось пропустить тогда).Перед каждым параметром необходимо использовать косую черту
net start
. Также не забудьте указать параметры, которые имеют пробелы.источник
net start servicename /foo
для одного аргументаnet start servicename /"foo bar"
для строки или списка аргументовПримечание . Этому вопросу уже 8 лет, но у меня нет репутации, чтобы комментировать принятый ответ, и это по-прежнему лучший результат Google в 2018 году, поэтому я хотел уточнить, что сейчас работает в отношении окончательного редактирования вопросов.
источник
:-)
Вам необходимо использовать фактическое название сервиса, как оно отображается на панели управления сервисами. Если он содержит пробелы, вы должны поставить кавычки вокруг имени службы.
Чтобы получить реальное имя сервиса, просто введите
net start
без каких-либо параметров в командной строке. Он должен дать вам список всех запущенных сервисов, чтобы вы могли получить реальное имя сервиса. Тогда просто используйтеnet start <servicename>
источник
net start "my-service-name"
отлично. Этоnet start "my-service-name" /blah
дает мне сообщение об ошибке. Я также пытался,net start "my-service-name" -blah
и это тоже синтаксическая ошибка.Могут ли InstSrv и SrvAny помочь в этом? Руководство и ссылки
источник