次のセクションでは、Windows サービスにカスタム イベント ログを追加します。イベント ログは、Windows サービスとまったく関連付けられていません。ここでは、Windows サービスに追加できるコンポーネントの種類の例として、EventLog コンポーネントを使用しています。カスタム イベント ログの詳細については、「方法 : カスタム イベント ログを作成または削除する」を参照してください。
サービスにカスタム イベント ログ機能を追加するには
ソリューション エクスプローラで Service1.vb、Service1.cs、または Service1.jsl を右クリックし、[デザイナの表示] をクリックします。
ツールボックスの [コンポーネント] タブから、EventLog コンポーネントをデザイナにドラッグします。
ソリューション エクスプローラで Service1.vb、Service1.cs、または Service1.jsl を右クリックし、[コードの表示] をクリックします。
コンストラクタを編集して、カスタム イベント ログを定義します。
' To access the constructor in Visual Basic, select New from the
' method name drop-down list.
Public Sub New()
MyBase.New()
InitializeComponent()
If Not System.Diagnostics.EventLog.SourceExists("MySource") Then
System.Diagnostics.EventLog.CreateEventSource("MySource", _
"MyNewLog")
End If
EventLog1.Source = "MySource"
EventLog1.Log = "MyNewLog"
End Sub
public MyNewService()
{
InitializeComponent();
if (!System.Diagnostics.EventLog.SourceExists("MySource"))
{
System.Diagnostics.EventLog.CreateEventSource(
"MySource","MyNewLog");
}
eventLog1.Source = "MySource";
eventLog1.Log = "MyNewLog";
}
public MyNewService()
{
InitializeComponent();
if (!System.Diagnostics.EventLog.SourceExists("MySource"))
{
System.Diagnostics.EventLog.CreateEventSource(
"MySource", "MyNewLog");
}
eventLog1.set_Source("MySource");
eventLog1.set_Log("MyNewLog");
}
サービスの開始時の処理を定義するには
サービスの停止時の処理を定義するには
また、OnPause、OnContinue、および OnShutdown の各メソッドをオーバーライドして、コンポーネントの処理をさらに定義することもできます。
サービスに対して他の処理を定義するには
Windows サービスをインストールするときに、いくつかのカスタム動作を実行する必要があります。これらの処理は、Installer クラスによって実行できます。Visual Studio は、これらのインストーラを Windows サービス専用に作成し、プロジェクトに追加できます。
サービスのインストーラを作成するには
ソリューション エクスプローラで Service1.vb、Service1.cs、または Service1.jsl を右クリックし、[デザイナの表示] をクリックします。
デザイナの背景をクリックして、サービスの内容ではなくサービス自体を選択します。
デザイナにフォーカスを置いた状態で右クリックし、[インストーラの追加] をクリックします。
既定では、2 つのインストーラを含むコンポーネント クラスがプロジェクトに追加されます。このコンポーネントは ProjectInstaller という名前で、サービス用のインストーラと、サービスの関連プロセス用のインストーラを含んでいます。
ProjectInstaller のデザイン ビューで、[ServiceInstaller1] または [serviceInstaller1] をクリックします。
[プロパティ] ウィンドウで、[ServiceName] プロパティを MyNewService に設定します。
[StartType] プロパティを Automatic に設定します。
デザイナで、[ServiceProcessInstaller1] (Visual Basic プロジェクトの場合) または [serviceProcessInstaller1] (Visual C# プロジェクトまたは Visual J# プロジェクトの場合) をクリックします。[Account] プロパティを LocalService に設定します。これにより、サービスがインストールされ、ローカル サービス アカウントで実行されます。
セキュリティに関するメモ : |
|---|
LocalService アカウントは、ローカル コンピュータで非特権ユーザーとして機能し、リモート サーバーには匿名の資格情報を渡します。その他のアカウントは高い特権で実行され、悪意あるコードから攻撃されるリスクが高くなるため、その使用には注意が必要です。 |
サービス プロジェクトをビルドするには
ソリューション エクスプローラで、プロジェクトを右クリックし、[プロパティ] をクリックします。プロジェクトのプロパティ デザイナが表示されます。
[アプリケーション] ページで、[スタートアップ オブジェクト] ボックスの一覧の [MyNewService] をクリックします。
Ctrl キーと Shift キーを押しながら B キーを押して、プロジェクトをビルドします。
これでプロジェクトがビルドされ、配置できるようになりました。セットアップ プロジェクトは、コンパイルされたプロジェクト ファイルをインストールし、Windows サービスの実行に必要なインストーラを実行します。完全なセットアップ プロジェクトを作成するには、プロジェクトの出力である MyNewService.exe をセットアップ プロジェクトに追加し、MyNewService.exe をインストールするカスタム動作を追加する必要があります。セットアップ プロジェクトの詳細については、「セットアップ プロジェクト」を参照してください。カスタム動作の詳細については、「チュートリアル : カスタム動作の作成」を参照してください。
サービスのセットアップ プロジェクトを作成するには
ソリューション エクスプローラでソリューションを右クリックして選択し、[追加] をポイントして [新しいプロジェクト] をクリックします。
[プロジェクトの種類] ペインの [セットアップ/配置プロジェクト] フォルダをクリックします。
[テンプレート] ペインの [セットアップ プロジェクト] をクリックします。プロジェクトに「MyServiceSetup」という名前を付けます。[OK] をクリックします。
セットアップ プロジェクトがソリューションに追加されます。
次に、Windows サービス プロジェクトからの出力である MyNewService.exe をセットアップに追加します。
セットアップ プロジェクトに MyNewService.exe を追加するには
ソリューション エクスプローラで、[MyServiceSetup] を右クリックし、[追加] をポイントします。次に、[プロジェクト出力] をクリックします。
[プロジェクト出力グループの追加] ダイアログ ボックスが表示されます。
[プロジェクト] ボックスでは、[MyNewService] が選択されています。
一覧の [プライマリ出力] をクリックし、[OK] をクリックします。
MyNewService のプライマリ出力のプロジェクト項目がセットアップ プロジェクトに追加されます。
次に、MyNewService.exe ファイルをインストールするカスタム動作を追加します。
セットアップ プロジェクトにカスタム処理を追加するには
ソリューション エクスプローラで、セットアップ プロジェクトを右クリックし、[表示] をポイントします。次に、[カスタム動作] をクリックします。
カスタム動作エディタが表示されます。
カスタム動作エディタで、[カスタム動作] ノードを右クリックし、[カスタム動作の追加] をクリックします。
[プロジェクトから項目を選択] ダイアログ ボックスが表示されます。
一覧の [アプリケーション フォルダ] をダブルクリックして開き、[MyNewService (アクティブ) のプライマリ出力] をクリックし、[OK] をクリックします。
カスタム動作の 4 つのノードすべて (Install、Commit、Rollback、Uninstall) にプライマリ出力が追加されます。
ソリューション エクスプローラで、MyServiceSetup プロジェクトを右クリックし、[ビルド] をクリックします。
Windows サービスをインストールするには
MyNewService.exe をインストールするには、ソリューション エクスプローラでセットアップ プロジェクトを右クリックし、[インストール] をクリックします。
セットアップ ウィザードの手順に従って操作します。ソリューションをビルドし、保存します。
サービスを開始および停止するには
サービス コントロール マネージャを次のいずれかの方法で開きます。
Windows XP および Windows 2000 Professional のデスクトップで、[マイ コンピュータ] を右クリックし、[管理] をクリックします。[コンピュータの管理] コンソールで、[サービスとアプリケーション] ノードを展開します。
または
Windows Server 2003 および Windows 2000 Server では、[スタート] メニューの [プログラム] をポイントし、[管理ツール] をポイントして、[サービス] をクリックします。
メモ : |
|---|
Windows NT Version 4.0 では、コントロール パネルからこのダイアログ ボックスを開くことができます。 |
ウィンドウの [サービス] セクションの一覧に MyNewService が表示されます。
一覧で目的のサービスを右クリックし、[開始] をクリックします。
サービスを右クリックし、[中止] をクリックします。
サービスのイベント ログ出力を検査するには
サーバー エクスプローラを表示し、[イベント ログ] ノードにアクセスします。詳細については、「方法 : サーバー エクスプローラでイベント ログを使用する」を参照してください。
メモ : |
|---|
Windows サービスのテンプレートおよび関連する機能は、Visual Studio の Standard Edition では使用できません。 |
MyNewLog のリスティングを展開します。サービスが実行した処理に対するエントリが表示されます。
サービスをアンインストールするには
[スタート] メニューの [コントロール パネル] をクリックし、[プログラムの追加と削除] をクリックします。アンインストールするサービスを選択し、[アンインストール] をクリックします。
.msi ファイルのプログラム アイコンを右クリックして [アンインストール] をクリックしても、プログラムをアンインストールできます。
メモ : |
|---|
Windows 2000 にサービスをインストールした場合は、サービスを再インストールする前にシステムを再起動する必要があります。Windows 2000 では、システムを再起動するまでサービスは完全に削除されません。 |