C# で Windowsサービス の 開発

0 件のコメント

Windowsサービス を C# で作成する手順を記載します。 Windowsサービス プログラム は簡単に作れますが…その手順が一癖あるようなので、ここにチュートリアルとしてまとめておきます。 あまり凝ったことはせず、単に空のサービスを作成する手順になっています。

目次

概要

ここでは "何も行わない" Windowsサービス を作成します。 目標はビルドしてデバッグができる状態にするまでです。

プロジェクト の 作成

  1. [ファイル]-[新規作成]-[プロジェクト] を選択
  2. [Windowsサービス] テンプレート を選択
  3. 「名前」「場所」「ソリューション名」を確認、変更
  4. 「OK」を選択

Windowsサービス の 実装

  1. "Service1.cs" を ダブルクリック で 選択 (ダブルクリックでないと表示できません。)
  2. 「プロパティ」ウィンドウから [インストーラーの追加] を選択
  3. "ProjectInstaller.cs" を ダブルクリック で 選択
  4. "serviceInstaller1" を選択し、プロパティを変更
    Description
    サービスの説明を記載します
    DisplayName
    サービスの表示名を記載します
    ServiceName
    システムがサービスを識別するための名称を設定します
    StartType
    サービスの開始方法を選択します
  5. "serviceInstaller1" を選択し、プロパティを変更
    Account
    サービスが実行されるアカウントを選択します
  6. "Service1.cs" を右クリック、[コードの表示] を選択
  7. "OnStart メソッド" および "OnStop メソッド" に動作を実装
    今回は何もしないので、空白のままです。

Windowsサービス の デバッグ

Windowsサービス はいきなりデバッグができません。 まずシステムに登録を行い、次に登録したサービスを実行し、最後に[プロセスにアタッチ]でデバッグができるようになります。

Windowsサービス の インストール

  1. 「Visual Studio コマンドプロンプト」を 管理者 で実行
  2. ビルドディレクトリへ移動
    cd /d "ビルドディレクトリ"
    
  3. InstallUtil を利用して インストール
    installutil アセンブリ名
    

Windowsサービス の 実行

  1. コントロールパネルから「サービス」を開く
  2. 一覧からインストールしたサービス名を選択
  3. [サービスの開始] を選択

Windowsサービス に アタッチ

  1. [ツール]-[プロセスにアタッチ] を選択
  2. 「選択可能なプロセス」からインストールしたサービス名を選択
    (プロセス名はプロジェクトのアセンブリ名。ここでは WindowsService.exe。 実行アカウントが「User」でない場合、「すべてのユーザーからのプロセスを表示する」にチェックが必要です。)
  3. 「アタッチ」を選択

まとめ

ポイントは「インストーラーの追加」と「コマンドでのインストール」、「プロセスにアタッチ」でしょうか。 初見では、このあたりで詰まりました。

具体的には… 「インストーラーの追加」はダブルクリックで開くこと、 「コマンドでのインストール」は管理者権限で Visual Studio コマンドプロンプト を利用すること、 「プロセスにアタッチ」は実行ユーザーによってプロセスが表示されてない場合があること… といったところです。

Windowsサービスのインストーラーに関しては別記事にするとして、 本日はこのあたりで…。

関連記事

参考サイト