次の方法で共有


OpenServiceA 関数 (winsvc.h)

既存のサービスを開きます。

構文

SC_HANDLE OpenServiceA(
  [in] SC_HANDLE hSCManager,
  [in] LPCSTR    lpServiceName,
  [in] DWORD     dwDesiredAccess
);

パラメーター

[in] hSCManager

サービス コントロール マネージャー データベースへのハンドル。 OpenSCManager 関数は、このハンドルを返します。 詳細については、「サービスのセキュリティとアクセス権の」を参照してください。

[in] lpServiceName

開くサービスの名前。 これは、サービス オブジェクトの作成時に CreateService 関数の lpServiceName パラメーターで指定された名前であり、サービスを識別するためにユーザー インターフェイス アプリケーションによって表示されるサービス表示名ではありません。

文字列の最大長は 256 文字です。 サービス コントロール マネージャー データベースでは文字の大文字と小文字が保持されますが、サービス名の比較では常に大文字と小文字が区別されません。 スラッシュ (/) と円記号 (\) は無効なサービス名文字です。

[in] dwDesiredAccess

サービスへのアクセス。 アクセス権の一覧については、「サービス セキュリティとアクセス権の」を参照してください。

要求されたアクセスを許可する前に、システムは呼び出し元プロセスのアクセス トークンを、サービス オブジェクトに関連付けられているセキュリティ記述子の随意アクセス制御リストと照合します。

戻り値

関数が成功した場合、戻り値はサービスへのハンドルです。

関数が失敗した場合、戻り値は NULL です。 拡張エラー情報を取得するには、GetLastError呼び出します。

サービス コントロール マネージャーでは、次のエラー コードを設定できます。 その他は、サービス コントロール マネージャーによって呼び出されるレジストリ関数によって設定できます。

リターン コード 形容
ERROR_ACCESS_DENIED
ハンドルはサービスにアクセスできません。
ERROR_INVALID_HANDLE
指定されたハンドルが無効です。
ERROR_INVALID_NAME
指定されたサービス名が無効です。
ERROR_SERVICE_DOES_NOT_EXIST
指定されたサービスが存在しません。

備考

返されたハンドルは、OpenService呼び出されたプロセスに対してのみ有効です。 これは、CloseServiceHandle 関数を呼び出すことによって閉じることができます。

OpenService使用するには、SC_MANAGER_CONNECT以外の特権は必要ありません。

例については、「サービスの開始 」を参照してください。

手記

winsvc.h ヘッダーは、Unicode プリプロセッサ定数の定義に基づいて、この関数の ANSI または Unicode バージョンを自動的に選択するエイリアスとして OpenService を定義します。 エンコードに依存しないエイリアスをエンコードに依存しないコードと組み合わせて使用すると、コンパイルエラーやランタイム エラーが発生する不一致が発生する可能性があります。 詳細については、「関数プロトタイプの 規則」を参照してください。

必要条件

要件 価値
サポートされる最小クライアント Windows XP [デスクトップ アプリのみ]
サポートされる最小サーバー Windows Server 2003 [デスクトップ アプリのみ]
ターゲット プラットフォーム の ウィンドウズ
ヘッダー winsvc.h (Windows.h を含む)
ライブラリ Advapi32.lib
DLL Advapi32.dll

関連項目

ChangeServiceConfig の

CloseServiceHandle の

ControlService

CreateService の

DeleteService の

EnumDependentServices を する

OpenSCManager

QueryServiceConfig

QueryServiceDynamicInformation の

QueryServiceObjectSecurity

QueryServiceStatusEx

SCM ハンドル

サービス関数の

SetServiceObjectSecurity の

StartService の