ServiceBase ServiceBase ServiceBase ServiceBase Class

定義

サービス アプリケーションの一部として存在するサービスの基本クラスを提供します。Provides a base class for a service that will exist as part of a service application. ServiceBase は、新しいサービス クラスの作成時に派生される必要があります。ServiceBase must be derived from when creating a new service class.

public ref class ServiceBase : System::ComponentModel::Component
public class ServiceBase : System.ComponentModel.Component
type ServiceBase = class
    inherit Component
Public Class ServiceBase
Inherits Component
継承

注釈

サービスアプリケーションServiceBaseでサービスクラスを定義するときに、から派生します。Derive from ServiceBase when defining your service class in a service application. 有用なサービスはOnStart 、メソッドとメソッドをOnStopオーバーライドします。Any useful service overrides the OnStart and OnStop methods. その他の機能についてOnPauseOnContinue 、サービス状態の変更に応じて、とを特定の動作でオーバーライドできます。For additional functionality, you can override OnPause and OnContinue with specific behavior in response to changes in the service state.

サービスは、ユーザーインターフェイスをサポートしておらず、ログオンしているユーザーアカウントで実行されない可能性がある、実行時間の長い実行可能ファイルです。A service is a long-running executable that does not support a user interface, and which might not run under the logged-on user account. このサービスは、ユーザーがコンピューターにログオンしていなくても実行できます。The service can run without any user being logged on to the computer.

既定では、サービスはシステムアカウントで実行されますが、これは管理者アカウントと同じではありません。By default, services run under the System account, which is not the same as the Administrator account. システムアカウントの権限を変更することはできません。You cannot change the rights of the System account. または、をServiceProcessInstaller使用して、サービスを実行するユーザーアカウントを指定することもできます。Alternatively, you can use a ServiceProcessInstaller to specify a user account under which the service will run.

実行可能ファイルには複数のサービスを含めることができServiceInstallerますが、各サービスに個別のが含まれている必要があります。An executable can contain more than one service but must contain a separate ServiceInstaller for each service. インスタンスServiceInstallerによって、サービスがシステムに登録されます。The ServiceInstaller instance registers the service with the system. インストーラーは、各サービスをイベントログに関連付けて、サービスコマンドを記録するために使用することもできます。The installer also associates each service with an event log that you can use to record service commands. 実行main()可能ファイルの関数は、実行するサービスを定義します。The main() function in the executable defines which services should run. サービスの現在の作業ディレクトリは、実行可能ファイルが配置されているディレクトリではなく、システムディレクトリです。The current working directory of the service is the system directory, not the directory in which the executable is located.

サービスを開始すると、実行可能ファイルが検索され、 OnStart実行可能ファイル内に含まれるそのサービスのメソッドが実行されます。When you start a service, the system locates the executable and runs the OnStart method for that service, contained within the executable. ただし、サービスの実行は実行可能ファイルの実行と同じではありません。However, running the service is not the same as running the executable. 実行可能ファイルは、サービスのみを読み込みます。The executable only loads the service. サービスは、サービスコントロールマネージャーを使用してアクセスされます (開始や停止など)。The service is accessed (for example, started and stopped) through the Service Control Manager.

実行可能ファイルはServiceBase 、サービスで Start を初めて呼び出すときに、派生クラスのコンストラクターを呼び出します。The executable calls the ServiceBase derived class's constructor the first time you call Start on the service. OnStartコマンド処理メソッドは、コンストラクターが実行された直後に呼び出されます。The OnStart command-handling method is called immediately after the constructor executes. 最初にサービスが読み込まれた後、コンストラクターは再実行されません。したがって、コンストラクターによって実行される処理は、 OnStartによって実行されるものと分離する必要があります。The constructor is not executed again after the first time the service has been loaded, so it is necessary to separate the processing performed by the constructor from that performed by OnStart. によってOnStop解放できるリソースは、でOnStart作成する必要があります。Any resources that can be released by OnStop should be created in OnStart. コンストラクターにリソースを作成すると、がリソースを解放した後OnStopにサービスが再度開始された場合に、リソースが正しく作成されなくなります。Creating resources in the constructor prevents them from being created properly if the service is started again after OnStop has released the resources.

サービスコントロールマネージャー (SCM) は、サービスと対話する方法を提供します。The Service Control Manager (SCM) provides a way to interact with the service. SCM を使用して、サービスに開始、停止、一時停止、続行、またはカスタムコマンドを渡すことができます。You can use the SCM to pass Start, Stop, Pause, Continue, or custom commands into the service. SCM は、およびCanStop CanPauseAndContinueの値を使用して、サービスが停止、一時停止、または続行コマンドを受け入れるかどうかを判断します。The SCM uses the values of CanStop and CanPauseAndContinue to determine whether the service accepts Stop, Pause, or Continue commands. SCM のコンテキストメニューでは、対応するプロパティCanStopまたはCanPauseAndContinuetrueサービスクラスにある場合にのみ、停止、一時停止、および続行が有効になります。Stop, Pause, and Continue are enabled in the SCM's context menus only if the corresponding property CanStop or CanPauseAndContinue is true in the service class. 有効にするとOnStop、コマンドがサービスに渡され、、 OnPause、またはOnContinueが呼び出されます。If enabled, the command is passed to the service, and OnStop, OnPause, or OnContinue is called. CanStop OnStop、またはがfalseの場合、メソッドを実装していても、対応するコマンド処理メソッド (など) は処理されません。 CanPauseAndContinue CanShutdownIf CanStop, CanShutdown, or CanPauseAndContinue is false, the corresponding command-handling method (such as OnStop) will not be processed, even if you have implemented the method.

ServiceControllerクラスを使用すると、ユーザーインターフェイスを使用して SCM が行う処理をプログラムで実行できます。You can use the ServiceController class to do programmatically what the SCM does using a user interface. コンソールで使用できるタスクを自動化できます。You can automate the tasks available in the console. CanStopCanShutdownまたはCanPauseAndContinueがでtrueあるにもかかわらず、対応するコマンド処理メソッド (などOnStop) が実装されていない場合、システムは例外をスローし、コマンドを無視します。If CanStop, CanShutdown, or CanPauseAndContinue is true but you have not implemented a corresponding command-handling method (such as OnStop) the system throws an exception and ignores the command.

OnStart OnStop、 、またはその他のメソッドを実装する必要はありません。ServiceBaseYou do not have to implement OnStart, OnStop, or any other method in ServiceBase. ただし、サービスの動作はでOnStart説明されているので、少なくともこのメンバーをオーバーライドする必要があります。However, the service's behavior is described in OnStart, so at minimum, this member should be overridden. 実行main()可能ファイルの関数は、 Runメソッドを呼び出すことによって、実行可能ファイル内のサービスをサービスコントロールマネージャーに登録します。The main() function of the executable registers the service in the executable with the Service Control Manager by calling the Run method. メソッドにServiceBase渡されるオブジェクトのServiceNameプロパティは、そのサービスのサービスインストーラーのプロパティと一致する必要があります。 ServiceName RunThe ServiceName property of the ServiceBase object passed to the Run method must match the ServiceName property of the service installer for that service.

を使用InstallUtil.exeして、システムにサービスをインストールすることができます。You can use InstallUtil.exe to install services on your system.

注意

アプリケーションイベントログ以外のログを指定してサービス呼び出しの通知を受け取ることはできますがAutoLogEventLogプロパティとプロパティのどちらもカスタムログに書き込むことはできません。You can specify a log other than the Application event log to receive notification of service calls, but neither the AutoLog nor the EventLog property can write to a custom log. 自動AutoLogログfalse記録を使用しない場合は、に設定します。Set AutoLog to false if you do not want to use automatic logging.

コンストラクター

ServiceBase() ServiceBase() ServiceBase() ServiceBase()

ServiceBase クラスの新しいインスタンスを作成します。Creates a new instance of the ServiceBase class.

フィールド

MaxNameLength MaxNameLength MaxNameLength MaxNameLength

サービス名の最大サイズを示します。Indicates the maximum size for a service name.

プロパティ

AutoLog AutoLog AutoLog AutoLog

イベント ログで、Start、Stop、Pause、Continue の各コマンドをレポートするかどうかを示します。Indicates whether to report Start, Stop, Pause, and Continue commands in the event log.

CanHandlePowerEvent CanHandlePowerEvent CanHandlePowerEvent CanHandlePowerEvent

サービスで、コンピューターの電源ステータスの変更の通知を処理できるかどうかを示す値を取得または設定します。Gets or sets a value indicating whether the service can handle notifications of computer power status changes.

CanHandleSessionChangeEvent CanHandleSessionChangeEvent CanHandleSessionChangeEvent CanHandleSessionChangeEvent

ターミナル サーバー セッションから受信したセッション変更イベントをサービスで処理できるかどうかを示す値を取得または設定します。Gets or sets a value that indicates whether the service can handle session change events received from a Terminal Server session.

CanPauseAndContinue CanPauseAndContinue CanPauseAndContinue CanPauseAndContinue

サービスを一時中断および再開できるかどうかを示す値を取得または設定します。Gets or sets a value indicating whether the service can be paused and resumed.

CanRaiseEvents CanRaiseEvents CanRaiseEvents CanRaiseEvents

コンポーネントがイベントを発生させることがきるかどうかを示す値を取得します。Gets a value indicating whether the component can raise an event.

(Inherited from Component)
CanShutdown CanShutdown CanShutdown CanShutdown

システムのシャットダウン時に、サービスにそれを通知する必要があるかどうかを示す値を取得または設定します。Gets or sets a value indicating whether the service should be notified when the system is shutting down.

CanStop CanStop CanStop CanStop

サービスを開始した後に停止できるかどうかを示す値を取得または設定します。Gets or sets a value indicating whether the service can be stopped once it has started.

Container Container Container Container

IContainer を格納している Component を取得します。Gets the IContainer that contains the Component.

(Inherited from Component)
DesignMode DesignMode DesignMode DesignMode

Component が現在デザイン モードかどうかを示す値を取得します。Gets a value that indicates whether the Component is currently in design mode.

(Inherited from Component)
EventLog EventLog EventLog EventLog

Start や Stop などのサービス コマンドの呼び出し通知をアプリケーション イベント ログに書き込むために使用できるイベント ログを取得します。Gets an event log you can use to write notification of service command calls, such as Start and Stop, to the Application event log.

Events Events Events Events

Component に結び付けられているイベント ハンドラーのリストを取得します。Gets the list of event handlers that are attached to this Component.

(Inherited from Component)
ExitCode ExitCode ExitCode ExitCode

サービスの終了コードを取得または設定します。Gets or sets the exit code for the service.

ServiceHandle ServiceHandle ServiceHandle ServiceHandle

サービスのサービス コントロール ハンドルを取得します。Gets the service control handle for the service.

ServiceName ServiceName ServiceName ServiceName

システムでサービスを識別するために使用される短い名前を取得または設定します。Gets or sets the short name used to identify the service to the system.

Site Site Site Site

ComponentISite を取得または設定します。Gets or sets the ISite of the Component.

(Inherited from Component)

メソッド

CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type) CreateObjRef(Type)

リモート オブジェクトとの通信に使用するプロキシの生成に必要な情報をすべて格納しているオブジェクトを作成します。Creates an object that contains all the relevant information required to generate a proxy used to communicate with a remote object.

(Inherited from MarshalByRefObject)
Dispose() Dispose() Dispose() Dispose()

Component によって使用されているすべてのリソースを解放します。Releases all resources used by the Component.

(Inherited from Component)
Dispose(Boolean) Dispose(Boolean) Dispose(Boolean) Dispose(Boolean)

ServiceBase で使用されていたリソース (メモリを除く) を解放します。Disposes of the resources (other than memory) used by the ServiceBase.

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

指定したオブジェクトが、現在のオブジェクトと等しいかどうかを判断します。Determines whether the specified object is equal to the current object.

(Inherited from Object)
GetHashCode() GetHashCode() GetHashCode() GetHashCode()

既定のハッシュ関数として機能します。Serves as the default hash function.

(Inherited from Object)
GetLifetimeService() GetLifetimeService() GetLifetimeService() GetLifetimeService()

対象のインスタンスの有効期間ポリシーを制御する、現在の有効期間サービス オブジェクトを取得します。Retrieves the current lifetime service object that controls the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
GetService(Type) GetService(Type) GetService(Type) GetService(Type)

Component またはその Container で提供されるサービスを表すオブジェクトを返します。Returns an object that represents a service provided by the Component or by its Container.

(Inherited from Component)
GetType() GetType() GetType() GetType()

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

(Inherited from Object)
InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService() InitializeLifetimeService()

このインスタンスの有効期間ポリシーを制御する有効期間サービス オブジェクトを取得します。Obtains a lifetime service object to control the lifetime policy for this instance.

(Inherited from MarshalByRefObject)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

(Inherited from Object)
MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean) MemberwiseClone(Boolean)

現在の MarshalByRefObject オブジェクトの簡易コピーを作成します。Creates a shallow copy of the current MarshalByRefObject object.

(Inherited from MarshalByRefObject)
OnContinue() OnContinue() OnContinue() OnContinue()

派生クラスに実装されると、OnContinue() は、サービス コントロール マネージャー (SCM) によって Continue コマンドがサービスに送信されるときに実行されます。When implemented in a derived class, OnContinue() runs when a Continue command is sent to the service by the Service Control Manager (SCM). サービスが一時中断してから通常の操作の再開時に実行されるアクションを指定します。Specifies actions to take when a service resumes normal functioning after being paused.

OnCustomCommand(Int32) OnCustomCommand(Int32) OnCustomCommand(Int32) OnCustomCommand(Int32)

派生クラスに実装されると、OnCustomCommand(Int32) は、サービス コントロール マネージャー (SCM) でカスタム コマンドがサービスに渡されるときに、実行されます。When implemented in a derived class, OnCustomCommand(Int32) executes when the Service Control Manager (SCM) passes a custom command to the service. パラメーター値が設定されているコマンドの発生時に実行されるアクションを指定します。Specifies actions to take when a command with the specified parameter value occurs.

OnPause() OnPause() OnPause() OnPause()

派生クラスに実装されると、Pause コマンドがサービス コントロール マネージャー (SCM) によってサービスに送信されるときに実行されます。When implemented in a derived class, executes when a Pause command is sent to the service by the Service Control Manager (SCM). サービスが一時中断したときに実行されるアクションを指定します。Specifies actions to take when a service pauses.

OnPowerEvent(PowerBroadcastStatus) OnPowerEvent(PowerBroadcastStatus) OnPowerEvent(PowerBroadcastStatus) OnPowerEvent(PowerBroadcastStatus)

派生クラスに実装されると、コンピューターの電源ステータスの変更時に実行されます。When implemented in a derived class, executes when the computer's power status has changed. これは中断モードのラップトップ コンピューターに適用されるもので、システムのシャットダウンとは異なります。This applies to laptop computers when they go into suspended mode, which is not the same as a system shutdown.

OnSessionChange(SessionChangeDescription) OnSessionChange(SessionChangeDescription) OnSessionChange(SessionChangeDescription) OnSessionChange(SessionChangeDescription)

変更イベントがターミナル サーバー セッションから受信された場合に実行します。Executes when a change event is received from a Terminal Server session.

OnShutdown() OnShutdown() OnShutdown() OnShutdown()

派生クラスに実装されると、システムがシャット ダウンされるときに実行されます。When implemented in a derived class, executes when the system is shutting down. システムがシャット ダウンする直前に発生する処理を指定します。Specifies what should occur immediately prior to the system shutting down.

OnStart(String[]) OnStart(String[]) OnStart(String[]) OnStart(String[])

派生クラスに実装されると、Start コマンドがサービス コントロール マネージャー (SCM) によってサービスに送信されるとき、またはオペレーティング システムが (自動的に起動するサービスのために) 起動するときに実行されます。When implemented in a derived class, executes when a Start command is sent to the service by the Service Control Manager (SCM) or when the operating system starts (for a service that starts automatically). サービスが開始するときに実行されるアクションを指定します。Specifies actions to take when the service starts.

OnStop() OnStop() OnStop() OnStop()

派生クラスに実装されると、Stop コマンドがサービス コントロール マネージャー (SCM) によってサービスに送信されるときに実行されます。When implemented in a derived class, executes when a Stop command is sent to the service by the Service Control Manager (SCM). サービスが実行を停止したときに実行されるアクションを指定します。Specifies actions to take when a service stops running.

RequestAdditionalTime(Int32) RequestAdditionalTime(Int32) RequestAdditionalTime(Int32) RequestAdditionalTime(Int32)

保留中の操作について時間の延長を要求します。Requests additional time for a pending operation.

Run(ServiceBase) Run(ServiceBase) Run(ServiceBase) Run(ServiceBase)

サービス コントロール マネージャー (SCM) を使用してサービスの実行可能ファイルを登録します。Registers the executable for a service with the Service Control Manager (SCM).

Run(ServiceBase[]) Run(ServiceBase[]) Run(ServiceBase[]) Run(ServiceBase[])

複数サービスの実行可能ファイルをサービス コントロール マネージャー (SCM) に登録します。Registers the executable for multiple services with the Service Control Manager (SCM).

ServiceMainCallback(Int32, IntPtr) ServiceMainCallback(Int32, IntPtr) ServiceMainCallback(Int32, IntPtr) ServiceMainCallback(Int32, IntPtr)

コマンド ハンドラーを登録し、サービスを開始します。Registers the command handler and starts the service.

Stop() Stop() Stop() Stop()

サービスの実行を停止します。Stops the executing service.

ToString() ToString() ToString() ToString()

Component の名前 (存在する場合) を格納する String を返します。Returns a String containing the name of the Component, if any. このメソッドはオーバーライドできません。This method should not be overridden.

(Inherited from Component)

イベント

Disposed Disposed Disposed Disposed

Dispose() メソッドの呼び出しによってコンポーネントが破棄されると発生します。Occurs when the component is disposed by a call to the Dispose() method.

(Inherited from Component)

適用対象

こちらもご覧ください