Функция 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 доступ, или вызывающий процесс должен быть владельцем объекта . |
|
Задает идентификатор безопасности владельца объекта. Дескриптор, указанный в hService , должен иметь WRITE_OWNER доступ, или вызывающий процесс должен быть владельцем объекта или иметь включенную привилегию SE_TAKE_OWNERSHIP_NAME. |
|
Задает системный список управления доступом (SACL) объекта . Дескриптор, указанный hService, должен иметь ACCESS_SYSTEM_SECURITY доступ.
Получение доступа к ACCESS_SYSTEM_SECURITY
|
[in] lpSecurityDescriptor
Указатель на структуру SECURITY_DESCRIPTOR , содержащую новые сведения о безопасности.
Возвращаемое значение
Если функция выполнена успешно, функция возвращает ненулевое значение.
Если функция завершается сбоем, она возвращает ноль. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Диспетчер управления службами может задать следующие коды ошибок. Другие коды ошибок могут быть заданы функциями реестра, вызываемыми диспетчером управления службами.
Код возврата | Описание |
---|---|
|
Указанный дескриптор не был открыт с необходимым доступом, или вызывающий процесс не является владельцем объекта . |
|
Указанный дескриптор недопустим. |
|
Указанные сведения о безопасности или дескриптор безопасности недопустимы. |
|
Указанная служба помечена для удаления. |
Комментарии
Функция SetServiceObjectSecurity задает указанные части дескриптора безопасности объекта службы на основе сведений, указанных в буфере lpSecurityDescriptor . Эта функция заменяет все или все сведения о безопасности, связанные с объектом службы, в соответствии с флагами, установленными в параметре dwSecurityInformation , и подчиняются правам доступа вызывающего процесса.
При создании службы диспетчер управления службами назначает объекту службы дескриптор безопасности по умолчанию. Чтобы получить копию дескриптора безопасности для объекта службы, вызовите функцию QueryServiceObjectSecurity . Описание дескриптора безопасности по умолчанию для объекта службы см. в разделе Service Security and Access Rights.
Обратите внимание, что предоставление определенного доступа ненадежным пользователям (например, SERVICE_CHANGE_CONFIG или SERVICE_STOP) может позволить им помешать выполнению службы и, возможно, позволит им запускать приложения под учетной записью LocalSystem.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | winsvc.h (включая Windows.h) |
Библиотека | Advapi32.lib |
DLL | Advapi32.dll |
См. также раздел
Низкоуровневые контроль доступа