Windowsサービス を C# で作成する手順を記載します。 Windowsサービス プログラム は簡単に作れますが…その手順が一癖あるようなので、ここにチュートリアルとしてまとめておきます。 あまり凝ったことはせず、単に空のサービスを作成する手順になっています。
目次
概要
ここでは "何も行わない" Windowsサービス を作成します。 目標はビルドしてデバッグができる状態にするまでです。
プロジェクト の 作成
Windowsサービス の 実装
- "Service1.cs" を ダブルクリック で 選択 (ダブルクリックでないと表示できません。)
- 「プロパティ」ウィンドウから [インストーラーの追加] を選択
- "ProjectInstaller.cs" を ダブルクリック で 選択
- "serviceInstaller1" を選択し、プロパティを変更
- Description
- サービスの説明を記載します
- DisplayName
- サービスの表示名を記載します
- ServiceName
- システムがサービスを識別するための名称を設定します
- StartType
- サービスの開始方法を選択します
- "serviceInstaller1" を選択し、プロパティを変更
- Account
- サービスが実行されるアカウントを選択します
- "Service1.cs" を右クリック、[コードの表示] を選択
- "OnStart メソッド" および "OnStop メソッド" に動作を実装
今回は何もしないので、空白のままです。
Windowsサービス の デバッグ
Windowsサービス はいきなりデバッグができません。 まずシステムに登録を行い、次に登録したサービスを実行し、最後に[プロセスにアタッチ]でデバッグができるようになります。
- 「Visual Studio コマンドプロンプト」を 管理者 で実行
- ビルドディレクトリへ移動1
cd /d "ビルドディレクトリ"
- InstallUtil を利用して インストール1
installutil アセンブリ名
- [ツール]-[プロセスにアタッチ] を選択
- 「選択可能なプロセス」からインストールしたサービス名を選択
(プロセス名はプロジェクトのアセンブリ名。ここでは WindowsService.exe。 実行アカウントが「User」でない場合、「すべてのユーザーからのプロセスを表示する」にチェックが必要です。) - 「アタッチ」を選択
まとめ
ポイントは「インストーラーの追加」と「コマンドでのインストール」、「プロセスにアタッチ」でしょうか。 初見では、このあたりで詰まりました。
具体的には… 「インストーラーの追加」はダブルクリックで開くこと、 「コマンドでのインストール」は管理者権限で Visual Studio コマンドプロンプト を利用すること、 「プロセスにアタッチ」は実行ユーザーによってプロセスが表示されてない場合があること… といったところです。
Windowsサービスのインストーラーに関しては別記事にするとして、 本日はこのあたりで…。
関連記事
参考サイト
- backyard of 伊勢的新常識 - WindowsサービスをC#で書く
- IT media - 初めて作る.NET Windowsサービス (1/7)
- Symfowareについての考察blog - C#で自己登録型のWindows サービスアプリケーションを作成する
最後に… このブログに興味を持っていただけた方は、 ぜひ 「Facebookページ に いいね!」または 「Twitter の フォロー」 お願いします!!