1月 15, 2022

でWindowsサービスを作成するVB.NET

Environment:.NET,Visual Basic

Introduction

いくつかのファイルを常に監視したり、ログを作成したり、マシンが何か他のことをしている間にバックグラウンドで常に実行したりするアプリケーションを作成したいとします。 これを行う最善の方法は、windowsスケジューラを使用して、Windowsアプリケーションを継続的にまたは定期的に実行することでした。 しかし、一つの大きな欠点がありました:誰かがこのアプリケーションを起動するためにシステムにログオこれをすべて行う最善の方法は、Windows2000/WINDOWS NT用のWindowsサービスを作成することであるため、これはもはや問題ではありません。

WINDOWSサービス(以前はNTサービスと呼ばれていました)とは何ですか?

Windowsサービスのコア機能は、バックグラウンドでアプリケーションを実行することです。 Windowsアプリケーションと異なる点は、ユーザーがシステムにログオンする前にWindowsサービスが起動することです(起動時に起動するように設定されている場合)。 サービスは、ユーザーが手動で起動する必要があるように設定できます。

また、Windowsサービスには独自のプロセスがあるため、非常に効率的に実行されます。 通常、Windowsサービスには、システムにログオンしていなくても実行できるという単純な理由でユーザーインターフェイスがありません。 これはルールではなく、ユーザーインターフェイスを備えたWindowsサービスを使用することもできます。

Windows2000では、コントロールパネル、管理ツールを開き、サービスをクリックすると、コンピューターで実行されているすべてのサービスを表示できます。

Windowsサービスの作成VB.NET

NET、Windowsサービスを作成することは多くの作業でした。 あなたは非常に簡単ではなかったいくつかのシステムレベルの手順を使用しなければなりませんでしたが、VB.NET これは非常に簡単になっています。 ここでは、Windowsサービスを作成する方法を学びます。

潜る前にいくつか知っておくべきだ。 Windowsサービスは、Windows95、98、またはMEでは使用できません。 サービスを実行するには、Windows NTまたはWindows2000が必要です。

.NETを使用する利点は、フレームワークにすべてのクラスが組み込まれていることです。 これは、Windowsサービスの作成、インストール、および制御に役立ちます。

NET、新しいWindowsサービスプロジェクトを作成し、MyServiceを呼び出し、OKをクリックします。

コンポーネントタブのツールバーからタイマーコントロールを追加します。 Timer1のプロパティウィンドウで、Intervalプロパティを10000、つまり10秒に変更します。

ソースコード

Timer1コントロールをダブルクリックして、Timer1_Elapsedのコードウィンドウを開き、次のコードを入力します。 (このコードは10秒ごとに実行されます。)

 Dim MyLog As New EventLog() ' create a new event log ' Check if the the Event Log Exists If Not MyLog.SourceExists("MyService") Then MyLog.CreateEventSource("MyService", "Myservice Log") ' Create Log End If MyLog.Source = "MyService" ' Write to the Log MyLog.WriteEntry("MyService Log", "This is log on " & _ CStr(TimeOfDay), _ EventLogEntryType.Information)

OnStartプロシージャに次のコードを入力します。 (この手順は、サービスを開始するときに呼び出され、タイマーを有効にします。)

 Timer1.Enabled = True

OnStopプロシージャに次のコードを入力します。 (この手順は、サービスを停止したときに呼び出され、タイマーを無効にします。)

 Timer1.Enabled = False

私たちのアプリケーションは準備ができていますが、先に進む前にいくつかのことを行う必要があります。 このアプリケーションをビルドすると、作成された実行可能ファイルはWindowsアプリケーションではないため、クリックして実行することはできません。 それはサービスとしてインストールする必要がありますが、心配しないでください。 VB。Netには、インストーラーをプログラムに追加し、ユーティリティを使用してサービスをインストールする機能があります。

プロジェクトへのインストーラの追加

Service1を開きます。vbデザインウィンドウを右クリックし、[インストーラの追加]オプションを選択します。 これにより、インストーラプロジェクトProjectInstallerが追加されます。vbは、既存のプロジェクトにServiceprocessinstaller1とServiceinstaller1の二つのコントロールを備えています。

Serviceinstaller1コントロールを選択し、プロパティウィンドウを開きます。 ServiceNameプロパティとDisplayNameプロパティをMyServiceに変更します。 (これは、サービスウィンドウのサービスのリストに表示する名前です。)

Serviceprocessinstaller1コントロールを選択し、プロパティウィンドウを開きます。 AccountプロパティをLocalSystemに変更します。 (ローカルマシンでこれを実行する必要があるため、これを指定する必要があります。)

今度は、アプリケーションをビルドし、実行可能ファイルを作成する時間です。 サービスのインストール手順を含む実行可能ファイルを作成するには、[ビルド]メニューから[ソリューションのビルド]を選択します。

サービスのインストール

このサービスをインストールするには、.NETユーティリティであるInstallUtilプログラムを使用してWindowsサービスをインストールする必要があります。 これはフォルダで見つけることができますC:\WINNT\Microsoft.NET\Framework\v1.0.3705(これは、使用しているバージョンによって、コンピュータ上で異なる場合があります。)

または、”スタート”、”プログラム”、”Microsoft Visual Studio.NET”、”Visual Studio.Netツール”、”Visual Studio.Netコマンドプロンプト”を選択して、.NETコマンドウィンドウを実行することもできます。 これにより、必要なすべてのパスが設定されます。

そのウィンドウで次のコマンドを入力します。InstallUtil C:\tgol\Myservice\Bin\Myservice…..exe”を起動します。 (これは、作成したばかりのサービスの実行可能ファイルのパスです。 覚えておいて、VB.NET プロジェクトフォルダの下のBinフォルダに実行可能ファイルを作成しました。 これを実行可能パスに変更してください。)サービスが正しくインストールされていることを確認するために、メッセージとログを見てくださ

サービスの開始

サービスの実行とサービスの開始は、2つの異なるものです。 InstallUtilを使用してサービスをインストールすると、現在サービスを実行していますが、まだ開始していません。 サービスを表示して開始するには、コントロールパネルを開きます。 管理ツールを開き、”サービス”をクリックし、”MyService”を見つけ、右クリックして”開始”を選択してこのサービスを開始します。

今、私たちのサービスが開始されました。 管理ツールからイベントビューアを開き、アプリケーションログをクリックして、サービス(MyService)によって10秒ごとに作成されたログを表示します。 (ログが表示されない場合は、[更新]をクリックします。 最新のイベントログを表示するには、更新を続ける必要があります。

サービスの停止

コントロールパネルを開き、管理ツールを開き、サービスをクリックし、MyServiceを右クリックし、停止を選択してサービスを停止します。

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

この手順はサービスのインストールに似ていますが、/Uパラメータを指定してInstallUtilを実行し、サービスをアンインストールします。

InstallUtil/U C:\tgol\Myservice\Bin\Myservice…..exe(またはコンピュータ上の実行可能パス)。 サービスが正しくアンインストールされていることを確認するためにメッセージを見てください。

ヒント

  • サービスをインストール/アンインストールする前に、サービスを停止し、サービスウィンドウを閉じます。
  • サービスアプリケーションに変更を加えた場合は、常にアンインストール/インストールします。
  • サービスアプリケーションでユーザーインターフェイス、入力、およびmsgboxを回避してみてください。
  • ProjectInstallerを開きます。vb、Serviceinstaller1コントロールを選択し、プロパティウィンドウを開きます。 サービスを自動で開始する場合は、StartTypeプロパティをAutomaticに変更します。

結論

Windowsサービスはしばしば見落とされています。 バックグラウンドで何かを監視または管理する必要がある場合は、標準アプリケーションの代わりにWindowsサービスを使用します。 唯一の欠点は、インストール手順ですが、私は、Windowsスケジューラを実行しているアプリケーションの上にWindowsサービスを選択するときに、負の、より肯定的な側面

コメントを残す

メールアドレスが公開されることはありません。