SetServiceObjectSecurity 函数 (winsvc.h)

[SetServiceObjectSecurity 可用于“要求”部分中指定的操作系统。 它可能在后续版本中变更或不可用。 请改用 SetNamedSecurityInfo 函数。]

SetServiceObjectSecurity 函数设置服务对象的安全描述符

语法

BOOL SetServiceObjectSecurity(
  [in] SC_HANDLE            hService,
  [in] SECURITY_INFORMATION dwSecurityInformation,
  [in] PSECURITY_DESCRIPTOR lpSecurityDescriptor
);

参数

[in] hService

服务的句柄。 此句柄由 OpenServiceCreateService 函数返回。 此句柄所需的访问权限取决于 dwSecurityInformation 参数中指定的安全信息。

[in] dwSecurityInformation

指定要设置的安全描述符的组成部分。 此参数可以是以下值的组合。 请注意, SetServiceObjectSecurity 未处理的标志将被无提示忽略。

含义
DACL_SECURITY_INFORMATION
(对象的 DACL) 设置 任意访问控制列表hService 指定的句柄必须具有WRITE_DAC访问权限,或者调用进程必须是对象的所有者。
GROUP_SECURITY_INFORMATION
(对象的 SID) 设置主组 安全标识符hService 指定的句柄必须具有WRITE_OWNER访问权限,或者调用进程必须是对象的所有者。
OWNER_SECURITY_INFORMATION
设置对象的所有者的 SID。 hService 指定的句柄必须具有WRITE_OWNER访问权限,或者调用进程必须是对象的所有者或启用SE_TAKE_OWNERSHIP_NAME特权。
SACL_SECURITY_INFORMATION
(对象的 SACL) 设置 系统访问控制列表hService 指定的句柄必须具有ACCESS_SYSTEM_SECURITY访问权限。

获取ACCESS_SYSTEM_SECURITY访问权限

  1. 在调用方当前访问令牌中启用SE_SECURITY_NAME特权
  2. 打开用于ACCESS_SYSTEM_SECURITY访问的句柄。
  3. 禁用权限。

[in] lpSecurityDescriptor

指向包含新安全信息的 SECURITY_DESCRIPTOR 结构的指针。

返回值

如果函数成功,该函数将返回非零值。

如果函数失败,则返回零。 要获得更多的错误信息,请调用 GetLastError。

服务控制管理器可以设置以下错误代码。 其他错误代码可由服务控制管理器调用的注册表函数设置。

返回代码 说明
ERROR_ACCESS_DENIED
指定的句柄未使用所需的访问权限打开,或者调用进程不是对象的所有者。
ERROR_INVALID_HANDLE
指定的句柄无效。
ERROR_INVALID_PARAMETER
指定的安全信息或安全描述符无效。
ERROR_SERVICE_MARKED_FOR_DELETE
指定的服务已标记为待删除。

注解

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

另请参阅

CreateService

低级别访问控制

低级别访问控制函数

OpenService

QueryServiceObjectSecurity

SECURITY_DESCRIPTOR