Desidero riavviare il servizio di Windows utilizzando il prompt dei comandi nella sezione [Icons]
utilizzando Inno Setup. Per favore aiutami a risolvere il problema.Come riavviare il servizio utilizzando il prompt dei comandi?
risposta
È possibile utilizzare sc start [service]
per avviare un servizio e sc stop [service]
per interromperlo. Con alcuni servizi net start [service]
sta facendo lo stesso.
Ma se si desidera utilizzarlo nello stesso batch, tenere presente che sc stop
non attenderà che il servizio venga arrestato. In questo caso è necessario utilizzare net stop [service]
seguito da net start [service]
. Questo verrà eseguito in modo sincrono.
L'uso di sc start + sc stop non funziona per me (la parte iniziale non funziona). Comunque usando net stop + net start funziona! –
Hai provato a utilizzare le virgolette per il nome del servizio? – senyor
'sc' ha il problema che non aspetta l'inizio/l'arresto per finire, invia solo una richiesta di avvio/arresto a un servizio - quindi non puoi' st fermare Foo && sc start Foo', perché fallisce - prova ad avviare il servizio prima che abbia finito di fermarsi. 'net' è quello corretto da usare qui, perché aspetta che l'inizio/l'arresto finiscano. –
È possibile avviare e interrompere e interrogare i servizi utilizzando il comando SC. Per quanto riguarda l'innosetup, non ne sono sicuro.
Si potrebbe creare un bat-file con seguente contenuto:
net stop "my service name"
net start "my service name"
Per riavviare un servizio in esecuzione:
net stop "service name" && net start "service name"
Tuttavia, se non si sa se il servizio è in esecuzione in primo luogo e desidera riavviarlo o avviarlo, utilizzare questo:
net stop "service name" & net start "service name"
Funziona se il servizio è già in esecuzione o meno.
Per riferimento, ecco lo documentation sui simboli di elaborazione condizionale.
la seconda versione con '||' è molto errata - se il servizio è in esecuzione, verrà arrestato, il comando avrà esito positivo e il secondo comando NON verrà eseguito affatto. prova 'echo a || echo b' –
Giusto, mio male. Risolto adesso! –
Questo è il mio codice, per avviare/interrompere un servizio di Windows utilizzando il comando SC
. Se il servizio non si avvia/interrompe, stampa le informazioni del registro. Puoi provarlo con 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));
non ho dato [una risposta a questa] (http://stackoverflow.com/questions/7803337/how-to-run-windows-start-service-using -inno-setup/7804288 # 7804288) nei commenti quando hai chiesto l'ultima volta? Utilizzare un EXE wrapper piccolo per fornire manifest per fornire le autorizzazioni necessarie e avviare/riavviare il servizio. – Deanna
Questa domanda è off-topic in quanto chiede "come posso riavviare un servizio nel prompt dei comandi" e non è specifica per innosetup. – cybermonkey