2011-10-20 17 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]を使用する必要があります。これは同期的に実行されます。

+0

sc start + sc stopを使用しても動作しません(起動部分が機能しません)。しかし、net stop + net startを使うとうまくいきます! –

+1

サービス名に引用符を使用しようとしましたか? – senyor

+3

'sc'は起動/停止が完了するのを待たずに、サービスに開始/停止要求を送るだけなので、' st stop Foo&sc start Foo'は失敗します。サービスが停止する前にサービスを開始しようとします。開始/停止が完了するのを待つので、 'net'はここで使う正しいものです。 –

1

SCコマンドを使用して、サービスを開始および停止し、クエリを実行できます。 innosetupについてはわかりません。

22

あなたは以下の内容での.batファイルを作成できます。サービスかどうかわからない場合は、しかし、

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

'||'の2番目のバージョンは非常に間違っています。サービスが実行中の場合、サービスは停止し、コマンドは成功し、2番目のコマンドはまったく実行されません。 try '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)); 
関連する問題