<Return[O]><Top>

OpenSCManager

Declare Function Api_OpenSCManager& Lib "advapi32" Alias "OpenSCManagerA" (ByVal lpMachineName$, ByVal lpDatabaseName$, ByVal dwDesiredAccess&)

Declare Function OpenSCManager Lib "advapi32" Alias "OpenSCManagerA" (ByVal lpMachineName As String, ByVal lpDatabaseName As String, ByVal dwDesiredAccess As Long) As Long

指定されたコンピュータ上のサービス制御マネージャとの接続を確立し、サービス制御マネージャの指定されたデータベースを開く。

パラメータ
lpMachineName
    [入力]ターゲット(接続先)コンピュータの名前を表す NULL で終わる文字列へのポインタを指定する。

    このポインタが NULL の場合や、空文字列を指している場合、この関数はローカルコンピュータ上のサービス制御マネージャに接続する。
lpDatabaseName
    [入力]サービス制御マネージャの開くデータベース名を表す、NULL で終わる文字列へのポインタを指定する。

    このパラメータは、SERVICES_ACTIVE_DATABASE に設定する。NULL の場合、既定で SERVICES_ACTIVE_DATABASE データベ

    ースを開く。
dwDesiredAccess
    [入力]サービス制御マネージャに割り当てるアクセス権を指定する。

    要求されたアクセス権を許可する前に、システムは呼び出し側プロセスのアクセストークンを、サービス制御マネージャに関連付けられている

    セキュリティ記述子の随意アクセス制御リストと比較する。この関数を呼び出すと、SC_MANAGER_CONNECT アクセスタイプが暗黙的に

    指定される。さらに、サービス制御マネージャオブジェクトの次のアクセスタイプのいずれか、またはすべてを指定することもできる。

    オブジェクトのアクセスタイプ                           

説明                                                                                                           

    SC_MANAGER_ALL_ACCESS

 

この表に記載したすべてのアクセスタイプ、および STANDARD_RIGHTS_REQUIRED を

セットする。

    SC_MANAGER_CONNECT

サービス制御マネージャとの接続を有効にする。

    SC_MANAGER_CREATE_SERVICE

 

サービスオブジェクトを作成してデータベースへ追加できるよう、CreateService 関数の呼び出

しを有効にする。

    SC_MANAGER_ENUMERATE_SERVICE

 

データベース内のサービスを列挙できるよう、EnumServicesStatus 関数の呼び出しを有効

にする。

    SC_MANAGER_LOCK

 

データベースのロックを取得できるよう、LockServiceDatabase 関数の呼び出しを有効にす

る。

    SC_MANAGER_QUERY_LOCK_STATUS

 

 

 

データベースのロックステータス情報を取得できるよう、QueryServiceLockStatus 関数の呼

び出しを有効にする。
dwDesiredAccess パラメータには、次の一般的なアクセス権のいずれか、またはすべてを指

定することもできる。 一般的なアクセス権 サービスマネージャのアクセスタイプ

    GENERIC_READ

 

 

アクセスタイプ STANDARD_RIGHTS_READ、

SC_MANAGER_ENUMERATE_SERVICE、

SC_MANAGER_QUERY_LOCK_STATUS を組み合わせる。

    GENERIC_WRITE

 

アクセスタイプ STANDARD_RIGHTS_WRITE と SC_MANAGER_CREATE_SERVICE

を組み合わせる。

    GENERIC_EXECUTE

 

アクセスタイプ STANDARD_RIGHTS_EXECUTE、SC_MANAGER_CONNECT、

SC_MANAGER_LOCK を組み合わせる。


戻り値
    関数が成功すると、サービス制御マネージャの指定されたデータベースのハンドルが返る。
    関数が失敗すると、NULL が返る。拡張エラー情報を取得するには、GetLastError 関数を使う。
    サービス制御マネージャ(SCM)は次のエラーコードを設定することがある。

    SCM が呼び出したレジストリ関数は、その他のエラーコードを設定することがある。

    エラーコード                                                 

意味                                               

    ERROR_ACCESS_DENIED

要求されたアクセスは拒絶された。

    ERROR_DATABASE_DOES_NOT_EXIST

指定されたデータベースは存在しない。

    ERROR_INVALID_PARAMETER

指定されたパラメータは無効である。