
コマンド プロンプト シェルの 2 つのコマンドを使用して、サービスを停止および開始できます。
- net start service "何らかのサービス"
- sc は「何らかのサービス」を開始します
これらのコマンドの違いは何ですか?
答え1
Windows NT では、両方のコマンドは同じサービス マネージャーにアクセスします。違いは主にユーザーに表示される部分にあります。
net
実際のところ、MS-DOS や OS/2 の時代から古いものです。sc
Windows NTでのみ登場(どのバージョンかは不明)。net
サービスを開始、停止、一時停止することしかできません。sc
より高度な制御が可能で、状態を照会したり、サービスを作成および削除したり、構成やセキュリティを変更したりできます。sc config beep start= demand
net
ローカルでのみ動作します。sc
ネットワーク経由で使用可能:sc \\snow start rpcapd
net
表示名を受け入れます:net start "Windows Firewall"
sc
常にサービス名が必要です:sc start SharedAccess
答え2
Grawityさんの回答は確かに役に立ったが、これらのコマンドの間には根本的な違いがあることがわかった。http://cbfive.com/command-line-service-management-net-v-sc/特に、このページでは、これら2つのコマンドは、タイミング:「net」は同期で、「sc」は非同期です。
SC は制御をサービスに送信し、コマンド プロンプトに戻ります。 これにより、通常、SC START はサービスを START_PENDING 状態で返します。 NET STARTは、開始するサービスが完全に開始状態になるまで待ってから戻ります。コマンドプロンプトで制御します。
...
SC STARTのように、SC STOPはサービスが停止するまで待機しません そのため、多くのサービス停止操作に対して STOP_PENDING が返されることがよくあります。 一方、NET STOPはサービスが停止するまで待機します。 コマンドプロンプトに戻る前に。
...
NET と SC では、成功条件と見なすものに関して異なる考え方を持っています。 SC が成功したかどうかを判断するために尋ねる質問は、「サービスに停止コントロールを正常に送信しましたか?」です。正常に送信された場合、サービスが停止したかどうかに関係なく、成功条件を満たしたことになります。NET は、「停止しようとしたサービスが正常に停止したことを返しましたか?」と尋ねます。正常に停止した場合は、条件を満たしたことになります。正常に停止しなかった場合は、理由に関係なく、NET は成功条件を満たしていません。
答え3
参考までに、sc start/stop の方が net start/stop よりも信頼性が高いことがわかりました。net start/stop によってサービスが開始中または停止中の状態で停止することがありましたが、sc start/stop ではこのようなことは一度もありませんでした。net start/stop の症状は、サービスが (taskkill によって) 強制終了された場合、つまり taskkill の後に net start でサービスを開始しようとすると、より頻繁に発生する傾向があります。
答え4
つまり、サービスの OnStart() ルーチンに時間がかかりすぎる場合は、NET START
サービスに停止コマンドを送信し、次のエラーを返します。
ServiceName サービスが起動しています.......
ServiceName サービスを開始できませんでした。
サービスはエラーを報告しませんでした。
NET HELPMSG 3534 と入力すると、さらに詳しいヘルプが表示されます。
サービスは正常に開始および停止されているにもかかわらず、この問題が発生します。
ここでこの投稿も見つけました。興味深いかもしれません: サービスを開始できませんでした