Windowsサービス サービス制御マネージャ 開始 停止 一時停止 再開

Windowsサービス : 2009.10.15 Thursday

Windowsサービス・サービス動作


動作概要
Windowsサービスは、サービス制御マネージャからの開始・停止・一時停止・再開などの要求により動作します。Windowsサービスの状態としては、停止状態・実行状態・一時停止状態があります。
また、通常のデスクトップアプリケーションと異なり、Windowsサービスの実行可能ファイルは、開始前にインストールしておく必要があります。
基本的な処理だけをおこなうWindowsサービスであれば、開始と停止だけをサポートしていれば問題はありません。一時停止・再開については、処理の中断と再開が可能でなければ、サポートすべきではありません。例えば、通信をおこなうWindowsサービスが実行状態の時にサービス制御マネージャからの一時停止の要求に対して、Windowsサービスがどのように動作するかを考えてみてください。この場合、通信中のパケットやコネクションを破棄するか、一時停止の要求を遅らせるか、一時停止を受け付けた後はクライアントからの要求を受け付けないなどの様々な方法が考えられますが、それらに応じた例外処理などを組み込み・テストする必要があります

スタートアップ
Windowsサービスは、Windowsシステム起動時に自動的に開始するか、手動で開始するか、あるいは無効とするかの3種類が選択できます。スタートアップの種類は、コントロールパネルのサービスアプレットで確認・変更ができます。

依存関係
Windowsシステム起動時に、Windowsサービスは自動的に開始することができますが、Windowsサービスの起動順序は通常、Windowsシステム(OS)によって決定されます。Windowsシステムでは、他Windowsサービスの起動完了を待たずに、次々とWindowsサービスが起動されます。
複数のWindowsサービスを、ある一定の順序で起動したい場合は、Windowsサービスの依存関係を設定します。Windowsサービスの依存関係はレジストリで設定します。例として、Service1 -> Service2 の順にWindowsサービスを起動したい場合、Service2のレジストリに、依存関係を設定します。


ハイブ HKEY_LOCAL_MACHINE¥SYSTEM¥CurrentControlSet¥Services¥Service2
キー DependOnServices
タイプ REG_MULTI_SZ
Service1


先に起動させたいWindowsサービスが複数ある場合、サービス名を各行に1つずつ入力します。
依存関係は、コントロールパネルのサービスアプレットで、各Windowsサービスのプロパティを表示して、確認できます。

Windowsサービスは NETコマンドで開始・停止できます。Windowsサービス開始/停止をバッチファイルで自動化すると、システム管理作業負荷が軽減されます。



【最近の投稿記事】



技術情報
SNMP |  Windowsサービス |  コンパネと管理ツール |  バッチファイル | 
Vista UAC無効化 |  Windows 7 UAC |  .NET Framework |  Webブラウザのリサイズ | 
SQL Server Express 管理 |  ダウンロードファイルのブロック解除 |  Windows Server サポート終了日 | 
Windows 8 フォト→ペイント |  Excelスクロールがおかしい !? |  ダウンロードフォルダ変更

コラム
プログラマ |  資格の王様 |  迷惑メール |  メール消失 |  情処の変遷 |  Webユーザビリティ