Подтвердить что ты не робот

Как перезапустить службу с помощью командной строки?

Я хочу перезапустить службу Windows с помощью командной строки в разделе [Icons] с помощью Inno Setup. Пожалуйста, помогите мне решить проблему.

4b9b3361

Ответ 1

Вы можете использовать sc start [service] для запуска службы и sc stop [service], чтобы остановить ее. С некоторыми сервисами net start [service] делает то же самое.

Но если вы хотите использовать его в той же партии, имейте в виду, что sc stop не будет ждать остановки службы. В этом случае вы должны использовать net stop [service], а затем net start [service]. Это будет выполняться синхронно.

Ответ 2

Вы можете создать .bat файл со следующим содержимым:

net stop "my service name"
net start "my service name"

Ответ 3

net.exe stop "servicename" && net.exe start "servicename"

Ответ 4

Чтобы перезапустить запущенную службу:

net stop "service name" && net start "service name"

Однако, если вы не знаете, запущена ли служба в первую очередь и хотите ее перезапустить или запустить, используйте следующую команду:

net stop "service name" & net start "service name"

Это работает, если служба уже запущена или нет.

Для справки, здесь документация на условных символах обработки.

Ответ 5

Это мой код, чтобы запустить/остановить службу Windows с помощью команды SC. Если служба не запускается/останавливается, она распечатывает информацию о журнале. Вы можете попробовать его с помощью программы Inno Setup.

{ start a service }
Exec(ExpandConstant('{cmd}'), '/C sc start ServiceName', '',
     SW_HIDE, ewWaitUntilTerminated, ResultCode);
Log('sc start ServiceName:'+SysErrorMessage(ResultCode));
{ stop a service }
Exec(ExpandConstant('{cmd}'), '/C sc stop ServiceName', '',
     SW_HIDE, ewWaitUntilTerminated, ResultCode);
Log('sc stop ServiceName:'+SysErrorMessage(ResultCode));

Ответ 6

Вы можете запускать и останавливать и запрашивать сервисы с помощью команды SC. Что касается innosetup, я не уверен.

Ответ 7

PowerShell имеет командлет Restart-Service, который либо запускает, либо перезапускает службу в зависимости от ситуации.

Командлет Restart-Service отправляет сообщение остановки, а затем сообщение запуска на контроллер служб Windows для указанной службы. Если служба уже была остановлена, она запускается без уведомления об ошибке.

Вы можете указать службы по их именам или отображаемым именам или использовать параметр InputObject для передачи объекта, представляющего каждую службу, которую вы хотите перезапустить.

Это немного более надежно, чем запуск двух отдельных команд.

Самый простой способ его использования - передать имя службы или отображаемое имя напрямую:

Restart-Service 'Service Name'

Его можно использовать непосредственно из стандартной командной строки с помощью команды, например:

powershell -command "Restart-Service 'Service Name'"