C# Windowsサービスを作る
です。ここ最近、バックグラウンドで実行されるサービスについて調べていたので、 ついでに、C#でWindowsサービスを作ってみました。
開発環境
- VisualStudio2010
- WindowsXP SP3 Net Framework4
VisualStudioのウィザードからテンプレートを選択します。
Service1.csのデザイナ上で右クリックをし、「インストーラーの追加」を選択します。
すると、ProjectInstaller.csのデザイナが表示され、 serviceProcessInstaller1とserviceInstaller1のコンポーネントが追加されます。
次に、プロパティウィンドウでこれらのコンポーネントの設定をします。
serviceInstaller1
Name | そのまんまですね。 |
DelayedAutoStart | 他の自動的に開始されるサービスが実行されるまでサービスの開始を遅延するかどうかを示す値 サービスが自動開始でない限り無視される |
Description | サービスの説明 |
DisplayName | 一覧での表示名 |
Parent | インストーラーが属しているコレクションを格納しているインストーラー。 |
ServiceName | システムが使用する名前 Service1.csのプロパティServiceNameとあわせます。 |
StartType | サービスを開始する方法 |
リファレンスのまんまですね。。。
serviceProcessInstaller1
Account | サービス アプリケーションを実行するときに使用するアカウントの種類 |
とりあえず、適当にサービスの説明と一覧での表示名を記述して、あとは、デフォルトのままで、AccountはUserにしときます。
あとは、Service1.csの中に、OnStartメソッドとOnStopメソッドがあるので、起動と停止の際のイベントに対応した処理を書きますが ここまでしといて、これといったサービスを考えていなかったので、とりあえず何もしないサービスをビルドしてみます。
すると、プロジェクトのbinフォルダにexeファイルが生成されるのでとりあえず、インストールしてみます。 インストールには、.NET FrameworkのユーティリティのInstallUtilを使います。
スタートメニューからVisualStudioコマンドプロンプトを起動して、
1
|
|
と実行します。 すると、「サービス ログインの設定」というポップアップダイアログが表示されます。
AccountはUserを指定しておいたので、ログインユーザーとパスワードを指定したいとこですが、 ここで一点注意で、ユーザー名は「コンピュータ名¥ユーザー名」の形で入力します。
無事、インストールが完了すれば、以下のように出力されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
コンピュータの管理から見てみると、ちゃんと登録出来てます。
実際に、起動してみます。
ちゃんと起動出来ます。何も実行されませんが。。。 最後に、アンインストールしときます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
|
最後の日本語がおかしいですが、無事アンインストール完了です。 次回までに、実際に動かすサービスを考えておこうと思います。