文書番号: 317421 - 最終更新日: 2006年10月3日 - リビジョン: 8.1

Visual Basic .NET または Visual Basic 2005 で Windows サービスのセットアップ プロジェクトを作成する方法

お知らせお使いのオペレーティング システムには適用しない情報が含まれている場合があります。
Microsoft Visual C# .NET については、次の資料を参照してください。816169? (http://support.microsoft.com/kb/816169/ )

目次

すべて展開する | すべて折りたたむ

概要

この資料では、Windows サービス アプリケーション (Windows サービスは以前は "NT サービス" と呼ばれていました) のセットアップ プロジェクトを作成する方法について説明します。最初に簡単な Windows サービス プロジェクトを含むソリューションを作成します。このプロジェクトは、アプリケーション ログにエントリを書き込むものです。次に、セットアップ プロジェクトをソリューションに追加し、Windows サービスをインストールします。最後に、Visual Studio .NET サーバー エクスプローラ内からサービスを開始します。

必要条件

必要なハードウェア、ソフトウェア、ネットワーク インフラストラクチャ、および Service Pack は、次のとおりです。
  • Microsoft .NET Framework がインストールされた Microsoft Windows Server 2003、Microsoft Windows 2000 Professional、Microsoft Windows 2000 Server、Microsoft Windows XP Professional、または Microsoft Windows XP Server
  • Microsoft Visual Studio .NET Enterprise Edition、Visual Studio .NET Enterprise Architect Edition または Microsoft Visual Studio 2005
この資料は、Windows サービスについての知識があるユーザーを対象としています。Windows サービスについては、「関連情報」を参照してください。

また、この資料では、このサービスをインストールして実行するユーザー アカウントに、サービスをインストールして開始するために必要なアクセス許可と、イベント ログにアクセスするために必要なアクセス許可があることを前提としています。

Windows サービスのセットアップ プロジェクトを作成する

ここでは、Windows サービス プロジェクトを作成する方法と、コンパイルされたセットアップ プロジェクトを使用して Windows サービスをインストールする方法について説明します。

Windows サービス プロジェクトを作成する

  1. [スタート] ボタンをクリックし、[プログラム]、[Microsoft Visual Studio .NET] または [Microsoft Visual Studio 2005] を順にポイントし、[Microsoft Visual Studio .NET] または [Microsoft Visual Studio 2005] をクリックします。
  2. [ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。
  3. [新しいプロジェクト] ダイアログ ボックスで、以下の手順を実行します。
    1. [プロジェクトの種類] の [Visual Basic プロジェクト] または [Visual Basic] の [Windows] をクリックします。
    2. [テンプレート] ボックスの一覧の [Windows サービス] をクリックします。
    3. [プロジェクト名] ボックスに LogWriterService と入力します。
    4. [場所] ボックスに C:\ と入力し、[OK] をクリックします。
  4. ソリューション エクスプローラで [Service1.vb] を右クリックし、[コードの表示] をクリックします。
  5. OnStart イベント ハンドラで、コメントを次のコードに置き換えます。
    EventLog.WriteEntry("My simple service started.")
  6. ソリューション エクスプローラで、[Service1.vb] をダブルクリックします。
  7. プロパティ ダイアログ ボックスで、[インストーラの追加] をクリックします。
  8. ServiceInstaller1 の [プロパティ] ウィンドウで、ServiceName プロパティを LogWriterService に変更します。
  9. [ProjectInstaller.vb [デザイン]] タブで、[ServiceProcessInstaller1] をクリックします。
  10. [プロパティ] ダイアログ ボックスで、Account プロパティを LocalSystem に変更します。LocalService 値および NetworkService 値は、Microsoft Windows XP およびそれ以降のオペレーティング システムでのみ使用可能です。

コンパイルされたセットアップ プロジェクトを使用して Windows サービスをインストールする

「Windows サービス プロジェクトを作成する」に記載されている手順を実行して Windows サービス プロジェクトを構成したら、サービス アプリケーションをパッケージ化するデプロイメント プロジェクトを追加し、サービス アプリケーションをインストールできるようにします。これを行うには、次の手順を実行します。
  1. 新しいプロジェクトを LogWriterService プロジェクトに追加します。
    1. ソリューション エクスプローラで、[ソリューション 'LogWriterService' (1 プロジェクト)] を右クリックし、[追加] をポイントし、[新しいプロジェクト] をクリックします。
    2. [プロジェクトの種類] ボックスの一覧の [セットアップ/デプロイメント プロジェクト] または [その他のプロジェクトの種類] の [セットアップと配置] をクリックします。
    3. [テンプレート] ボックスの一覧の [セットアップ プロジェクト] をクリックします。
    4. [プロジェクト名] ボックスに ServiceSetup と入力します。
    5. [場所] ボックスに C:\ と入力し、[OK] をクリックします。
  2. デプロイメント プロジェクトに対してパッケージの対象を指定します。
    1. ソリューション エクスプローラで、[ServiceSetup] を右クリックし、[追加] をポイントし、[プロジェクト出力] をクリックします。
    2. [プロジェクト出力グループの追加] ダイアログ ボックスで、[プロジェクト] ボックスの一覧の [LogWriterService] をクリックします。
    3. [プライマリ出力] をクリックし、[OK] をクリックします。
  3. プライマリ出力を追加するだけで適切なインストールが行われます。カスタム動作を追加するには、以下の手順を実行します。
    1. ソリューション エクスプローラで、[ServiceSetup] を右クリックし、[表示] をポイントし、[カスタム動作] をクリックします。
    2. [カスタム動作] を右クリックし、[カスタム動作の追加] をクリックします。
    3. [アプリケーション フォルダ] をクリックし、[OK] をクリックします。
    4. [LogWriterService (アクティブ) のプライマリ出力] をクリックし、[OK] をクリックします。[インストール]、[確定]、[ロールバック]、および [アンインストール] の下に [LogWriterService (アクティブ) のプライマリ出力] が表示されます。
  4. セットアップ プロジェクトは、デフォルトではビルド構成に含まれません。ソリューションをビルドするには、以下の手順を実行します。
    1. 以下のいずれかの手順を実行します。
      • [LogWriterService] を右クリックし、[ビルド] をクリックします。次に、[ServiceSetup] を右クリックし、[ビルド] をクリックします。
      • 同時にソリューション全体をビルドするには、[ビルド] メニューの [構成マネージャ] をクリックし、ServiceSetup の [ビルド] チェック ボックスをオンにします。
    2. Ctrl + Shift + B キーを押して、ソリューション全体をビルドします。ソリューションがビルドされると、サービス用の完全なインストール パッケージが作成されます。
  5. 新しくビルドしたサービスをインストールするには、[ServiceSetup] を右クリックし、[インストール] をクリックします。
  6. ServiceSetup セットアップ ウィザードで、[次へ] を 3 回クリックします。セットアップ プログラムでサービスをインストールしている間、進行状況バーが表示されます。
  7. サービスがインストールされたら、[閉じる] をクリックします。

完全なコード リスト (Service1.vb)

Imports System.ServiceProcess

Public Class Service1
    Inherits System.ServiceProcess.ServiceBase

#Region " Component Designer generated code "

    Public Sub New()
        MyBase.New()

        ' The Component Designer requires this call.
        InitializeComponent()

        ' Add any initialization after the InitializeComponent() call.

    End Sub

    'UserService overrides Dispose to clean up the component list.
    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing Then
            If Not (components Is Nothing) Then
                components.Dispose()
            End If
        End If
        MyBase.Dispose(disposing)
    End Sub

    ' This is the main entry point for the process.
    <MTAThread()> _
    Shared Sub Main()
        Dim ServicesToRun() As System.ServiceProcess.ServiceBase

        ' More than one NT Service may run within the same process. To add
        ' another service to this process, change the following line of 
        ' code to create a second service object. For example,
        '
        'ServicesToRun = New System.ServiceProcess.ServiceBase () {New Service1, New MySecondUserService}
        '
        ServicesToRun = New System.ServiceProcess.ServiceBase () {New Service1}

        System.ServiceProcess.ServiceBase.Run(ServicesToRun)
    End Sub

    'The Component Designer requires this code.
    Private components As System.ComponentModel.IContainer

    ' NOTE: The Component Designer requires the following procedure.
    ' You can use the Component Designer to modify the procedure.
    ' However, do not modify use the code editor to modify it.
    <System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
        components = New System.ComponentModel.Container()
        Me.ServiceName = "Service1"
    End Sub

#End Region

    Protected Overrides Sub OnStart(ByVal args() As String)
        EventLog.WriteEntry("My simple service started.")
    End Sub

    Protected Overrides Sub OnStop()

    End Sub

End Class

Windows サービスの動作を検証する

  1. [スタート] ボタンをクリックし、[コントロール パネル]、[管理ツール] の順にポイントして、[サービス] をクリックします。
  2. [LogWriterService] を右クリックし、[開始] をクリックします。
  3. イベントがイベント ログに記録されていることを確認するには、次のいずれかの方法を使用します。
    • [スタート] ボタンをクリックし、[コントロール パネル]、[管理ツール] の順にポイントし、[イベント ビューア] をクリックします。左側のウィンドウで [アプリケーション] をクリックし、右側のウィンドウでサービスのイベント ログを見つけます。
    • サーバー エクスプローラで、[サーバー]、[ComputerName]、[イベント ログ]、[アプリケーション]、[Service1] の順に展開します。Service1 はサービス自体ではなく、クラスの名前です。そのため、Service1 はアプリケーション名として使用されます (名前をカスタマイズする方法はこの資料では説明しません)。ログ エントリの上にカーソルを移動します。上から 2 番目のエントリには次のように表示されます。

      My simple service started

トラブルシューティング

Framework SDK ドキュメントには、次のように記載されています。
サービス アプリケーション プロジェクトが作成するコンパイル済み実行可能ファイルは、プロジェクトの使用開始前にサーバーにインストールしておく必要があります。F5 キーまたは F11 キーを押してサービス アプリケーションをデバッグまたは実行することはできません。サービスを即時実行することや、サービスのコードにアクセスすることはできません。サービスのインストールと起動を行ってから、デバッガをサービスのプロセスにアタッチする必要があります。
詳細については、次の MSDN (Microsoft Developer Network) Web サイトを参照してください。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vbcon/html/vbtskdebuggingserviceapplications.asp (http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vbcon/html/vbtskdebuggingserviceapplications.asp)

関連情報

サービスのインストール、テスト、およびデバッグ方法の理解に役立つ Windows サービスを作成するには、次の MSDN Web サイトを参照してください。
http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vbcon/html/vbconintroductiontontserviceapplications.asp (http://msdn.microsoft.com/library/ja/default.asp?url=/library/ja/vbcon/html/vbconintroductiontontserviceapplications.asp)
詳細については、次の MSDN Web サイトを参照してください。
http://msdn.microsoft.com/msdnmag/issues/01/12/NETServ/default.aspx (http://msdn.microsoft.com/msdnmag/issues/01/12/NETServ/default.aspx)

この資料は以下の製品について記述したものです。
  • Microsoft Visual Basic 2005
  • Microsoft Visual Basic .NET 2003 Standard Edition
  • Microsoft Visual Basic .NET 2002 Standard Edition
キーワード:?
kbhowtomaster kbvs2005applies kbvs2005swept KB317421
"Microsoft Knowledge Baseに含まれている情報は、いかなる保証もない現状ベースで提供されるものです。Microsoft Corporation及びその関連会社は、市場性および特定の目的への適合性を含めて、明示的にも黙示的にも、一切の保証をいたしません。さらに、Microsoft Corporation及びその関連会社は、本文書に含まれている情報の使用及び使用結果につき、正確性、真実性等、いかなる表明・保証も行ないません。Microsoft Corporation、その関連会社及びこれらの権限ある代理人による口頭または書面による一切の情報提供またはアドバイスは、保証を意味するものではなく、かつ上記免責条項の範囲を狭めるものではありません。Microsoft Corporation、その関連会社 及びこれらの者の供給者は、直接的、間接的、偶発的、結果的損害、逸失利益、懲罰的損害、または特別損害を含む全ての損害に対して、状況のいかんを問わず一切責任を負いません。(Microsoft Corporation、その関連会社 またはこれらの者の供給者がかかる損害の発生可能性を了知している場合を含みます。) 結果的損害または偶発的損害に対する責任の免除または制限を認めていない地域においては、上記制限が適用されない場合があります。なお、本文書においては、文書の体裁上の都合により製品名の表記において商標登録表示、その他の商標表示を省略している場合がありますので、予めご了解ください。"