検索
特集

初めて作る.NET WindowsサービスVisual Studio Magazine(4/7 ページ)

特にUIを持たずWindowsのバックグラウンドで動作する「Windowsサービス」。この特集では、実践的な開発手法レクチャーとして、.NETアプリケーションにモニタリング機能を提供するWindowsサービス作成方法を解説していく。

PC用表示 関連情報
Share
Tweet
LINE
Hatena

サービスをインストールする

 サービスを作成したら、該当サービスをインストールできるようにしなければならない。

 AppMonitorプロジェクトにインストーラを追加するには、デザインビューに切り替え、プロパティタブにある[Add Installer]というリンク(訳注:日本語版では[インストーラの追加])をクリックする(画面1参照)。

 このリンクをクリックすることで、プロジェクトにProjectInstaller.vbというモジュールが加わる。このモジュールをデザインビューで開くと、2つの新しいコンポーネント(ServiceProcessInstallerとServiceInstaller)が含まれていることを確認できる。ServiceProcessInstallerコンポーネントはWindowsサービスプロジェクトのためのものであり、サービスが実行される時のアカウント種別(LocalSystem、LocalUser、Userなど)と資格情報(クレデンシャル)を保持する。

 ServiceInstallerコンポーネントは、レジストリ(HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services)に書かれるサービスに関する情報を保持する。この情報には、「サービス名」「表示名」「依存するサービス群」「スタートアップの種類([自動]、[手動]、[無効]――標準設定では[手動])」が含まれる。

 プロジェクトに複数のサービスを含んでいるなら、それぞれのサービスに対するServiceInstallerコンポーネントを個別に用意すべきだ。なお、ServiceInstallerコンポーネントのInstallイベントやUninstallイベントを使うと、インストール時の追加処理を実装することもできる。

 いちどこれらのコンポーネントがプロジェクトに追加され、コンパイルされると、RunInstaller属性がTrueに設定される。インストーラが実行される時には、RunInstaller属性がTrueであるクラスだけがインストールされる(自動生成されたコードとProjectInstaller.vbモジュールにおいてフック可能なイベントについてはリストAを参照)。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 AppMonitorプロジェクトのディレクトリ直下にあるbinディレクトリに移動して、InstallUtilプログラムを実行すれば、サービスをインストールできる。

 InstallUtilは.NET Frameworkのユーティリティで、インストールの対象となる実行環境上の.NETインストーラを実行するものだ(.NET Frameworkをインストールしたあとに、.NET Frameworkのディレクトリにパスが通してあるものと想定する)。また、AppMonitorサービスをインストールするには、次のコマンドを利用する。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 同様にInstallUtilを使って次のように指定すれば、サービスをアンインストールできる。ただしサービスが停止している場合に限る。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 .NET Frameworkの複数バージョンを使っている場合には、コンパイルした.NET Frameworkと同じバージョンのInstallUtilを使わなければならない。InstallUtil.exeは、.NET Frameworkのディレクトリにある(訳注:x.y.zzzzはバージョン番号)。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

 AppMonitorプロジェクトでInstallUtilを実行したら、そのコマンドウィンドウの結果を確認しよう。InstallUtilは、結果を「サービス名.InstallLog」というファイルにも記録する。

 Windowsサービスをコンパイルおよびインストールする時の最後の注意点は、プロジェクトの\binディレクトリからサービスをインストールした場合、サービスが実行されている間は該当サービスのプロジェクトを再コンパイルできなくなるという点だ。これは、Windowsがサービスの実行ファイルをロックするためである。

*** 一部省略されたコンテンツがあります。PC版でご覧ください。 ***

© Copyright 2001-2005 Fawcette Technical Publications

ページトップに戻る