Функция SetPrivateObjectSecurity (securitybaseapi.h)
Функция SetPrivateObjectSecurity изменяет дескриптор безопасности частного объекта.
Чтобы указать, поддерживает ли защищенный сервер автоматическое наследование записей управления доступом (ACE), используйте функцию SetPrivateObjectSecurityEx .
Синтаксис
BOOL SetPrivateObjectSecurity(
[in] SECURITY_INFORMATION SecurityInformation,
[in] PSECURITY_DESCRIPTOR ModificationDescriptor,
[in, out] PSECURITY_DESCRIPTOR *ObjectsSecurityDescriptor,
[in] PGENERIC_MAPPING GenericMapping,
[in, optional] HANDLE Token
);
Параметры
[in] SecurityInformation
Указывает части дескриптора безопасности, которые необходимо задать. Это значение может быть сочетанием SECURITY_INFORMATION битовых флагов.
[in] ModificationDescriptor
Указатель на структуру SECURITY_DESCRIPTOR . Части этого дескриптора безопасности, указанные параметром SecurityInformation , применяются к дескриптору безопасности ObjectsSecurityDescriptor .
[in, out] ObjectsSecurityDescriptor
Указатель на указатель на структуру SECURITY_DESCRIPTOR . Этот дескриптор безопасности должен иметь самостоятельную форму. Память для дескриптора безопасности должна быть выделена из кучи процесса (GetProcessHeap) с помощью функции HeapAlloc.
На входных данных это текущий дескриптор безопасности частного объекта. Функция изменяет его, чтобы создать новый дескриптор безопасности. При необходимости функция SetPrivateObjectSecurity выделяет дополнительную память для создания дескриптора безопасности большего размера.
[in] GenericMapping
Указатель на структуру GENERIC_MAPPING , которая указывает конкретные и стандартные права доступа, соответствующие каждому из универсальных прав доступа.
[in, optional] Token
Дескриптор маркера доступа для клиента, от имени которого изменяется безопасность частного объекта. Этот параметр необходим, чтобы убедиться, что клиент предоставил допустимое значение для нового идентификатора безопасности владельца (SID). Маркер должен быть открыт для доступа TOKEN_QUERY.
Возвращаемое значение
Если функция выполняется успешно, функция возвращает ненулевое значение.
Если функция завершается сбоем, она возвращает ноль. Дополнительные сведения об ошибке можно получить, вызвав GetLastError.
Комментарии
Эта функция предназначена только для диспетчеров ресурсов. Чтобы реализовать стандартную семантику управления доступом для обновления дескрипторов безопасности, диспетчер ресурсов должен проверить выполнение следующих условий перед вызовом SetPrivateObjectSecurity:
- Если задан владелец объекта, вызывающий процесс должен иметь разрешение WRITE_OWNER или быть владельцем объекта.
- Если настраивается список управления доступом (DACL) объекта, вызывающий процесс должен иметь разрешение WRITE_DAC или быть владельцем объекта.
- Если задан список управления доступом (SACL) объекта, для вызывающего процесса необходимо включить привилегию SE_SECURITY_NAME.
Процесс, вызывающий эту функцию, не должен олицетворение клиента, так как клиенты обычно не имеют соответствующих привилегий, необходимых для базовых операций с маркерами.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows XP [только классические приложения] |
Минимальная версия сервера | Windows Server 2003 [только классические приложения] |
Целевая платформа | Windows |
Header | securitybaseapi.h (включая Windows.h) |
Библиотека | Advapi32.lib |
DLL | Advapi32.dll |
См. также раздел
Функции контроль доступа клиента или сервера