Функция SetServiceObjectSecurity устанавливает дескриптор безопасности (security descriptor) объекта службы.
Вместо нее используйте функцию SetNamedSecurityInfo.
Windows NT 3.51 и раньше: SetNamedSecurityInfo не поддерживается.BOOL SetServiceObjectSecurity( SC_HANDLE hService, SECURITY_INFORMATION dwSecurityInformation, PSECURITY_DESCRIPTOR lpSecurityDescriptor ); |
hService
[in] Дескриптор службы. Этот дескриптор возвращается функцией OpenService или CreateService. Доступ, требуемый для этого дескриптора зависит от информации о безопасности, заданной в параметре dwSecurityInformation.
dwSecurityInformation
[in] Задает устанавливаемые компоненты дескриптора безопасности. Этот параметр может быть комбинацией следующих значений.
Обратите внимание! на то, что те флаги, которые не обрабатываются SetServiceObjectSecurity, будут молча игнорироваться. |
Значение |
Предназначение |
---|---|
DACL_SECURITY_INFORMATION | Устанавливает список разграничительного контроля доступа (discretionary access control list - DACL) объекта. Дескриптор, заданный hService должен иметь доступ WRITE_DAC, или вызывающий процесс (process) должен быть владельцем объекта. |
GROUP_SECURITY_INFORMATION | Устанавливает первичный групповой идентификатор безопасности (security identifier - SID) объекта. Дескриптор, заданный hService должен иметь доступ WRITE_OWNER, или вызывающий процесс должен быть владельцем объекта. |
OWNER_SECURITY_INFORMATION | Устанавливает идентификатор безопасности (SID) владельца объекта. Дескриптор, заданный hService должен иметь доступ WRITE_OWNER, или вызывающий процесс должен быть владельцем объекта, или разрешить привилегии SE_TAKE_OWNERSHIP_NAME. |
SACL_SECURITY_INFORMATION | Устанавливает системный список контроля доступа (system access control list - SACL) объекта. Дескриптор, заданный hService должен иметь доступ
ACCESS_SYSTEM_SECURITY. Чтобы получить доступ ACCESS_SYSTEM_SECURITY
|
lpSecurityDescriptor
[in] Указатель на структуру 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. |
Обзор Низкоуровневое управление доступом, Функции, используемые низкоуровневым управлением доступом,
CreateService,
Размещение и совместимость SetServiceObjectSecurity |
||
К | Windows XP | Да |
л | Windows 2000 Professional | Да |
и | Windows NT Workstation | Да версии 3.1 и позже |
е | Windows Me | Нет |
н | Windows 98 | Нет |
т | Windows 95 | Нет |
С | Windows Server 2003 | Да |
е | Windows 2000 Server | Да |
р | Windows NT Server | Да версии 3.1 и позже |
в | ||
е | ||
р | ||
Используемая библиотека | Advapi32.lib | |
Используемая DLL | advapi32.dll | |
Заголовочный файл | ||
- объявлено в | Winsvc.h | |
- включено в | Windows.h | |
Unicode | Нет | |
Замечания по платформе | Не имеется |