2011-10-20 7 views
23

Inno Setup을 사용하여 [Icons] 섹션의 명령 프롬프트를 사용하여 Windows 서비스를 다시 시작하려고합니다. 문제 해결을 도와주세요.명령 프롬프트를 사용하여 서비스를 다시 시작하는 방법은 무엇입니까?

+0

내가 [이에 대한 답변을 (주지 않았다 http://stackoverflow.com/questions/7803337/how-to-run-windows-start-service-using -inno-setup/7804288 # 7804288) 마지막 질문을했을 때의 의견에? 작은 래퍼 EXE를 사용하여 필요한 사용 권한을 부여하고 서비스를 시작/다시 시작하는 매니페스트를 제공합니다. – Deanna

+0

이 질문은 '명령 프롬프트에서 서비스를 어떻게 재시작 할 수 있습니까?'라는 질문에 대한 주제가 아니므로 innosetup과 관련이 없습니다. – cybermonkey

답변

31

sc start [service]을 사용하여 서비스를 시작하고 sc stop [service]을 사용하여 서비스를 시작할 수 있습니다. 일부 서비스의 경우 net start [service]도 마찬가지입니다.

그러나 동일한 배치에서 사용하려면 sc stop이 서비스가 중지 될 때까지 기다리지 말아야합니다. 이 경우 net stop [service] 다음에 net start [service]을 사용해야합니다. 이것은 동 기적으로 실행됩니다.

당신은 다음과 같은 내용으로 .BAT 파일 만들 수
+0

sc start + sc stop을 사용하면 작동하지 않습니다 (시작 부분이 작동하지 않음). net stop + net start를 사용하면 효과적입니다! –

+1

서비스 이름에 따옴표를 사용하려 했습니까? – senyor

+3

'sc'는 시작/종료가 끝날 때까지 기다리지 않는 문제가 있습니다. 서비스에 시작/정지 요청만을 보냅니다. 그래서 실패 할 수 있기 때문에'Foo stop Foo & sc start Foo' 할 수 없습니다. 서비스가 중지되기 전에 서비스를 시작하려고 시도합니다. 'net'은 시작/정지가 끝나기를 기다리기 때문에 여기에서 사용하는 올바른 것입니다. –

1

SC 명령을 사용하여 서비스를 시작하고 중지하고 쿼리 할 수 ​​있습니다. innosetup에 대해서는 확실하지 않습니다.

22

: 당신이 서비스를 알고하지 않으면, 그러나

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

:

net stop "my service name" 
net start "my service name" 
5
net.exe stop "servicename" && net.exe start "servicename" 
+1

서비스를 다시 시작할 수있는 cmd가 하나 있습니까? – Nithin

+0

내가 알고있는 – oluies

+0

이 아님 net.exe stop % 1 && net.exe start % 1 – oluies

4

실행중인 서비스를 다시 시작하기를 첫 번째 위치에서 실행 중이며 다시 시작하거나 시작하려면 다음을 사용하십시오.

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

서비스가 이미 실행 중이거나 작동하지 않는 경우에 작동합니다.

참조 용으로 조건부 처리 기호의 경우 documentation입니다.

+0

'|| '가있는 두 번째 버전은 매우 잘못되었습니다. 서비스가 실행 중이면 서비스가 중지되고 명령은 성공하고 두 번째 명령은 전혀 실행되지 않습니다. 'echo a || 에코 b' –

+0

옳은, 내 나쁜. 지금 고쳐! –

2

이 코드는 SC 명령을 사용하여 Windows 서비스를 시작/중지합니다. 서비스가 시작/중지되지 않으면 로그 정보가 인쇄됩니다. 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)); 
관련 문제