• 締切済み

[Windows]SCMへのサービスの登録

Windowsのサービスコントロールマネージャ(以下、SCM)へのサービスの登録の件です。 登録時に、「複数のプロセス」を「1つのサービス」として登録することはできますか? たとえば、A.exe, B.exe, C.exeの3つのプログラムを依存関係(起動時の順序関係)を設定して 1つのサービスとして登録するイメージなのですが。 個人的にはサービス登録は難しいと思っています。 というのは、複数プロセスを1サービスとして登録すると サービスの状態(起動してるか停止しているか)をうまく判定できない気がします。

みんなの回答

  • anmochi
  • ベストアンサー率65% (1332/2045)
回答No.1

サービス一つでそれをやろうとすると、A、B、Cの起動順序や死活監視を制御するようなヘルパーサービスプログラムH.exeを用意して、scで登録するのはH.exeという事になろうて。この場合、AとBとCはサービスフレームワークではなく独自のデーモンとして開発する事になる。 質問内容からABCは既にサービスフレームワークで開発されているように見受けられるので、上の対応は難しいと推測される。 A、B、Cそれぞれをサービス化して、サービス間の依存関係を設定するという事でよければできる。 A.exeサービスを起動するには先にB.exeサービスが起動してなくちゃいけなくって、B.exeサービスを起動するにはC.exeサービスが起動してなくちゃいけない、C.exeサービスを停止する時は勝手にB.exeサービスも停止する、B.exeサービスを停止する時は勝手にA.exeサービスも停止するという奴。 つまり、3つのexeで1つのサービスではなく、3つのexeで3つのサービスになり、3つのサービスフレームワークが協調動作を行う事で(サービスフレームワークの管理機構においてのみではあるが)サービス間の整合性を保つことができる。 C:\>sc create c_service binpath= "C:\opt\C.exe" displayname= "C Service" start= auto C:\>sc create b_service binpath="C:\opt\B.exe" displayname= "B Service" start= auto depend= c_service C:\>sc create a_service binpath="C:\opt\A.exe" displayname= "A Service" start= auto depend= b_service コマンドライン引数のdependがミソで、こう指定する事により、ABC全部が停止している状態で C:\>net start a_service とすると、C、B、Aの順番にサービスが開始されるようになる。ABCが開始している状態で C:\>net stop c_service も同様にABCが順番に停止する。

関連するQ&A

  • 動作が重い(service.exe)

    tacchitoと申します。 どなたかご教授ください。よろしくお願いします。 windows起動直後から、動作が非常に重くなる時がたまにあります。 タスクマネージャを開くと、パフォーマンスが100%になっており、 プロセスを見るとservice.exeが70~90%になっております。 services.exeのプロセスを終了しようとすると、重要なプロセスなので 削除できませんとなってしまいます。 ちなみに、ウィルススキャンの結果、感染はしていないようです。 解決策をご存知の方、よろしくお願いいたします。

  • NTサービスへの登録方法

    VCで作成したexeをNTサービスへ登録する方法ってないですか? exe自体は、コンソール画面へ出力するだけの単純な動作のプログラムです。 NTサービスとは、コントロールパネル→管理ツール→サービスのことです。

  • プロセス、サービスについて

    タスクマネージャで表示されるあるプロセスについてつねにCPU使用率が0%のプロセスを停止した場合と0%で待機状態?(タスクマネージャで表示されている)の場合と負荷のかかり方に違いはありますか? また同様にサービスについて利用しないサービスを停止状態にしているのと開始状態にしているのと付加のかかり方に違いはありますか?

  • サービスの停止について

    Windows 10 64bit Pro 1803 ベースのPCで3つのサービスを開始しますが、停止します。これらの停止によって、サービス・Service Control Manager のエラーがイベントビューアに出ています。お手数でも以下のサービスが起動可能か検証のほど、よろしくお願いいたします。 サービス名は・Routing and Remote Access・Secure Socket Tunneling Protocol Service・Remote Access Connection Manager 以上です。

  • サービスプロセスからバッチファイルを起動すると、cmd.exeが増幅する。

    私が作成したサービスプログラム(コントロールパネル-管理ツール-サービスに表示されるプロセス)から、以下の記述のバッチファイル(test.batとします)をCreateProcess()にて起動したところ、test.bat内のap.exeは起動せず、cmd.exeのみが増幅していきます。(タスクマネージャにて確認)起動できる場合もあるのですが、何が原因なのでしょうか? test.batの内容 start /B "C:\Program Files\TEST" ap.exe

  • Windows常駐プロセス(サービス)の起動順指定

    ご質問します。 Windows常駐プロセスの起動順って指定できますか? 私の認識として、Windows常駐プロセスはタスクマネージャの 『プロセス』タブに表示されているexe達です。 要するに、スタートアップが自動設定されている サービスの起動順番を指定できるか? になるのでしょうか? サービスって一斉に起動されるのですか? 以上、よろしくお願い致します。

  • サービスEXEのプロセス終了について

    VC6.0 ATL COM AppWizard で作成したWindowsサービスについて質問です。 サービスが停止できなかった場合など、サービスEXEをタスクマネージャからプロセスの終了したいのですが、 Windows2000の場合、「アクセスが拒否されました。」と表示され、終了できません。 サービスEXEをタスクマネージャから終了できるのか、またそのために必要なコードをご教授願います。 サービス関連のロジックは ATL COM AppWizard で作成されたまま使用しております。

  • サービスを停止させる方法について

    Windows2000 sp4です。 タスクマネージャでプロセスの終了をすると「アクセスが拒否されました」と出て、コンピュータの管理-サービスでは「停止」ボタンがグレーアウトして押せない場合、そのサービスを停止する方法はありますか? msconfigで起動しないようにできるのですがPCの再起動が必要なので、強制終了的なことができるのか知りたいです。 ウイルスと分かっているのですが、サービスとして実行中でウイルスバスターで検知しても隔離できない感じです。

  • タスクマネージャ上で同じ名前のプロセスの区別

     質問させていただきます。どうぞよろしくお願いいたします。  複数の同じプロセス名のExe(例えばExcel.exeとして話をすすめます)を起動してそれぞれで重いファイルを開いて作業している際に、 そのうちの一つが固まってしまうことがあります。 タスクマネージャ上からそのExcel.exeのみを停止したいのですが、複数あるExcel.exeの中のどれなのかが分かりません。 「PIDの番号の一番若いものが、一番最初に起動したExcel.exeかな?」とか 「ワーキングメモリが一番大きいものかな?」などと考えてそれを落としてみましたが、 失敗して他のExcel.exeが落ちてしまいました。。。  もし何か方法がありそうでしたら、お教えいただきたくお願い致します。

  • aemain_service.exeについて教えてください

    WindowsXPを使用しています。パソコンを起動してタスクマネージャを開いてCPU使用率を見ると何時までも100%近くになっています。そのときのプロセスを見ると、aemain_service.exeというプログラムとSystemでほとんどのCPUリソースを消費していることが分かりました。このとき、アプリケーションはDrag'n drop CDとIEしか動いていません。このaemain_serviceがどういうものなのか、また、このような現象を解決する方法をご教示ください。