漫画の地球儀

Windowsサービスを作成する方法!!【管理、アプリケーションプログラム、タスクマネージャー、コマンド】

スポンサーリンク

Windowsサービス

f:id:rick1208:20200502191942p:plain
通常のプログラムは、ユーザーが起動します。そして、基本的には起動したユーザーの権限で実行されています。通常のプログラムを「管理者権限」で実行させることも可能ですが、その場合は明示的に「管理者として実行する」必要があります。また、その場合でも、ログインしてからの起動になりますし、ログオフするときには停止します。

これに対して、Windowsサービスは、ユーザーがログインしていなくても、Windowsの起動と同時に実行させることが可能です。権限も、あらかじめ設定しておくことが可能です。ですから、セキュリティソフトなど、ログインしていない状態でも立ち上がっていてほしいプログラムは、Windowsサービスとすることで、Windowsの起動と同時に実行させることが可能となります。

また、サーバーでは基本的に、電源が入っていればすべてのサービスが実行されています。これらのサービスもWindowsサービスとして実行されています。

Windowsサービスの管理

f:id:rick1208:20200430203509p:plain
現在ダウンロードされている「Windowsサービス」は「サービス管理ツール」ウィンドウで調べられます。

「サービス管理ツール」ウィンドウは、「コントロールパネル」から開きます。

Windowsのバージョンによって「コントロールパネル」の構成は異なりますので、ここでは検索を使用します。

「コントロールパネル」で「コントロールパネルの検索」窓で「サービス」を検索します。「サービス」が表示されたら「サービス」を押します。表示されなかったら「管理ツール」を押します。
f:id:rick1208:20200513184938p:plain

管理ツールの一覧の「サービス」をダブル押します。「サービス管理ツール」ウィンドウが表示されます。


Windows8以降なら「タスクマネージャー」から「サービス」タブを選択すると簡易的な一覧が表示可能です。タスクで右押して表示されるメニューから「サービス管理ツールを開く」で「サービス管理ツール」を開くことが可能です。
f:id:rick1208:20200513185009p:plain

「サービス管理ツール」ウィンドウのサービスで右クリックするとサービスの管理メニューが表示されます。ここでWindowsサービスを開始・停止したり、プロパティを調べたりといったサービスの管理が可能です。
f:id:rick1208:20200513185027p:plain

サービス管理ツールやタスクマネージャーを活用することによって、現在Windowsサービスとしてどのプログラムが登録されているのか、また稼働しているのかという状況を把握することが可能です。通常100以上のサービスが登録されている場合が多いですが、必要最小限の構成にした方が起動時の処理も早くなる可能性があります。

しかし、バックグラウンドで稼働させておく必要のあるアプリケーションプログラムも多くありますので、Windowsサービスを消去したり変更したりする場合は、本当に問題がないのか慎重にチェックするようにしましょう。

Windowsサービスの作成

f:id:rick1208:20200502180651p:plain
Windowsサービスもプログラムですので、まず最初はプログラムを作成します。Visual StudioにはWindows サービス用のテンプレートが用意されています。

もちろん、自分自身でゴリゴリ作成するのもありです。Windowsサービスは自動で立ち上げますので、登録する必要があります。

具体的にはレジストリの以下のキーの下に登録します。

HKLM\System\CurrentControlSet\Services
f:id:rick1208:20200513185049p:plain

登録は、「SC」コマンドで行います。

この「SC」コマンドは、サービスの登録だけではなく、スタート、停止、消去などサービスに対するいろいろな操作が可能です。コマンドプロンプトで「sc」を記入して「Enter」を押すと「SC」のコマンドなどのヘルプが表示されます。
f:id:rick1208:20200513185104p:plain

登録の基本書式は「sc create サービス名 binpath= 実行ファイルのフルパス名」となります。

また、「displayname= オプション名」を付けておくと「サービス管理ツール」で見たときにわかりやすくなります。

まとめ

f:id:rick1208:20200501005932p:plain
一般ユーザーがWindowsサービスを作成する機会は少ないと思いますが、一般のアプリケーションプログラムでは実現しにくい環境を作成することも可能です。

他にも起動プロセスやログインプロセス内でプログラムを実行させることは可能ですが、Windowsサービスのように実行権限を指定するなどの細かな設定は困難です。

ここでは、Windowsサービスの概要と、作成・登録方法の概要を見ていきましたが、まだまだ使用価値の高い機能です。プログラム実行の一つの選択肢に加えてみては。