<Return[D]><Top>

DeleteService

Declare Function Api_DeleteService& Lib "advapi32" Alias "DeleteService" (ByVal hService&)

Declare Function DeleteService Lib "advapi32" Alias "DeleteService" (ByVal hService As Long) As Long

指定されたサービスに、サービス制御マネージャのデータベースから削除するためのマークを付ける。

パラメータ
hService
    [入力]サービスのハンドルを指定する。OpenService 関数または CreateService 関数が返したハンドルを指定し、これには DELETE ア

    クセス権が必要である。

戻り値
    関数が成功すると、0 以外の値が返る。
    関数が失敗すると、0 が返る。拡張エラー情報を取得するには、 関数を使う。
    サービス制御マネージャは次のエラーコードを設定することがある。サービス制御マネージャが呼び出したレジストリ関数は、その他のエラー

    コードを設定することがある。

    エラーコード                                                      

意味                                                                                                      

    ERROR_ACCESS_DENIED

指定されたハンドルを開く際に、DELETE アクセス権が指定されていなかった。

    ERROR_INVALID_HANDLE

指定されたハンドルは無効である。

    ERROR_SERVICE_MARKED_FOR_DELETE

指定されたサービスには削除用のマークがすでに付いている。

 

解説
    DeleteService 関数はサービスに、サービス制御マネージャのデータベースから削除するためのマークを付ける。CloseServiceHandle 関数を

    呼び出して、このサービスの開いているすべてのハンドルを閉じ、サービスが動作していない状態になるまでは、このデータベースエントリは

    削除されない。SERVICE_CONTROL_STOP 制御コードを指定して ControlService 関数を呼び出すと、動作中のサービスは停止され

    る。サービスを停止できない場合は、システムを再起動したときにこのデータベースエントリが削除される。
    サービス制御マネージャは、レジストリからサービスキーとそのサブキーを削除することにより、サービスを削除する。