SetServiceObjectSecurity 関数 (winsvc.h)
[SetServiceObjectSecurity は、[要件] セクションで指定したオペレーティング システムで使用できます。 今後のバージョンでは変更されるか、利用できなくなる場合もあります。 代わりに、 SetNamedSecurityInfo 関数を使用します。
SetServiceObjectSecurity 関数は、サービス オブジェクトのセキュリティ記述子を設定します。
構文
BOOL SetServiceObjectSecurity(
[in] SC_HANDLE hService,
[in] SECURITY_INFORMATION dwSecurityInformation,
[in] PSECURITY_DESCRIPTOR lpSecurityDescriptor
);
パラメーター
[in] hService
サービスへのハンドル。 このハンドルは、 OpenService または CreateService 関数によって返されます。 このハンドルに必要なアクセス権は、 dwSecurityInformation パラメーターで指定されたセキュリティ情報によって異なります。
[in] dwSecurityInformation
設定するセキュリティ記述子の構成要素を指定します。 このパラメーターは、次の値と組み合わせて使用できます。 SetServiceObjectSecurity によって処理されないフラグは、自動的に無視されることに注意してください。
値 | 意味 |
---|---|
|
オブジェクトの 随意アクセス制御リスト (DACL) を設定します。 hService で指定されるハンドルには、WRITE_DACアクセス権が必要です。または、呼び出し元のプロセスが オブジェクトの所有者である必要があります。 |
|
オブジェクトのプライマリ グループ セキュリティ識別子 (SID) を設定します。 hService で指定されたハンドルにはWRITE_OWNERアクセス権が必要です。または、呼び出し元のプロセスが オブジェクトの所有者である必要があります。 |
|
オブジェクトの所有者の SID を設定します。 hService で指定するハンドルにはWRITE_OWNERアクセス権が必要です。または、呼び出し元のプロセスがオブジェクトの所有者であるか、SE_TAKE_OWNERSHIP_NAME特権が有効になっている必要があります。 |
|
オブジェクトの システム アクセス制御リスト (SACL) を設定します。 hService で指定されたハンドルには、ACCESS_SYSTEM_SECURITYアクセス権が必要です。
ACCESS_SYSTEM_SECURITY アクセス権を取得するには |
[in] lpSecurityDescriptor
新しいセキュリティ情報を含む SECURITY_DESCRIPTOR 構造体へのポインター。
戻り値
関数が成功した場合、関数は 0 以外の値を返します。
関数が失敗すると、0 が返されます。 詳細なエラー情報を得るには、GetLastError を呼び出します。
サービス コントロール マネージャーでは、次のエラー コードを設定できます。 その他のエラー コードは、サービス コントロール マネージャーによって呼び出されるレジストリ関数によって設定できます。
リターン コード | 説明 |
---|---|
|
指定したハンドルが必要なアクセス権で開かれていたか、呼び出し元のプロセスがオブジェクトの所有者ではありません。 |
|
指定されたハンドルが無効です。 |
|
指定されたセキュリティ情報またはセキュリティ記述子が無効です。 |
|
指定されたサービスは、削除対象としてマークされています。 |
注釈
SetServiceObjectSecurity 関数は、lpSecurityDescriptor バッファーで指定された情報に基づいて、サービス オブジェクトのセキュリティ記述子の指定された部分を設定します。 この関数は、 dwSecurityInformation パラメーターに設定されているフラグに従って、サービス オブジェクトに関連付けられているセキュリティ情報の一部またはすべてを置き換え、呼び出し 元プロセスのアクセス権に従います。
サービスが作成されると、サービス 制御マネージャーはサービス オブジェクトに既定のセキュリティ記述子を割り当てます。 サービス オブジェクトのセキュリティ記述子のコピーを取得するには、 QueryServiceObjectSecurity 関数を呼び出します。 サービス オブジェクトの既定のセキュリティ記述子の説明については、「 サービス セキュリティとアクセス権」を参照してください。
信頼されていないユーザー (SERVICE_CHANGE_CONFIGやSERVICE_STOPなど) に特定のアクセス権を付与すると、サービスの実行に干渉し、LocalSystem アカウントでアプリケーションを実行できる場合があることに注意してください。
要件
要件 | 値 |
---|---|
サポートされている最小のクライアント | Windows XP (デスクトップ アプリのみ) |
サポートされている最小のサーバー | Windows Server 2003 (デスクトップ アプリのみ) |
対象プラットフォーム | Windows |
ヘッダー | winsvc.h (Windows.h を含む) |
Library | Advapi32.lib |
[DLL] | Advapi32.dll |