Поделиться через


Класс CSecurityDesc

Этот класс представляет собой оболочку для SECURITY_DESCRIPTOR структуры.

Важно!

Этот класс и его члены нельзя использовать в приложениях, выполняемых в среде выполнения Windows.

Синтаксис

class CSecurityDesc

Участники

Открытые конструкторы

Имя Описание
CSecurityDesc::CSecurityDesc Конструктор.
CSecurityDesc::~CSecurityDesc Деструктор

Открытые методы

Имя Описание
CSecurityDesc::FromString Преобразует дескриптор безопасности в допустимый дескриптор функциональной безопасности.
CSecurityDesc::GetControl Извлекает данные элемента управления из дескриптора безопасности.
CSecurityDesc::GetDacl Извлекает сведения о списке управления доступом (DACL) из дескриптора безопасности.
CSecurityDesc::GetGroup Извлекает данные основной группы из дескриптора безопасности.
CSecurityDesc::GetOwner Извлекает сведения владельца из дескриптора безопасности.
CSecurityDesc::GetPSECURITY_DESCRIPTOR Возвращает указатель на структуру SECURITY_DESCRIPTOR .
CSecurityDesc::GetSacl Извлекает сведения о списке управления доступом (SACL) системы из дескриптора безопасности.
CSecurityDesc::IsDaclAutoInherited Определяет, настроен ли DACL для поддержки автоматического распространения.
CSecurityDesc::IsDaclDefaulted Определяет, настроен ли дескриптор безопасности с помощью DACL по умолчанию.
CSecurityDesc::IsDaclPresent Определяет, содержит ли дескриптор безопасности DACL.
CSecurityDesc::IsDaclProtected Определяет, настроен ли DACL для предотвращения изменений.
CSecurityDesc::IsGroupDefaulted Определяет, был ли идентификатор безопасности группы безопасности (SID) дескриптора безопасности по умолчанию.
CSecurityDesc::IsOwnerDefaulted Определяет, задан ли идентификатор безопасности владельца дескриптора безопасности по умолчанию.
CSecurityDesc::IsSaclAutoInherited Определяет, настроен ли saCL для поддержки автоматического распространения.
CSecurityDesc::IsSaclDefaulted Определяет, настроен ли дескриптор безопасности с помощью saCL по умолчанию.
CSecurityDesc::IsSaclPresent Определяет, содержит ли дескриптор безопасности SACL.
CSecurityDesc::IsSaclProtected Определяет, настроен ли saCL для предотвращения изменений.
CSecurityDesc::IsSelfRelative Определяет, находится ли дескриптор безопасности в автономном формате.
CSecurityDesc::MakeAbsolute Вызовите этот метод, чтобы преобразовать дескриптор безопасности в абсолютный формат.
CSecurityDesc::MakeSelfRelative Вызовите этот метод, чтобы преобразовать дескриптор безопасности в автономный формат.
CSecurityDesc::SetControl Устанавливает управляющие биты дескриптора безопасности.
CSecurityDesc::SetDacl Задает сведения в DACL. Если daCL уже присутствует в дескрипторе безопасности, он заменяется.
CSecurityDesc::SetGroup Задает основную группу сведений о дескрипторе безопасности абсолютного формата, заменив все сведения о первичной группе, которые уже присутствуют.
CSecurityDesc::SetOwner Задает сведения о владельце абсолютного дескриптора безопасности абсолютного формата, заменив все данные владельца, уже представленные.
CSecurityDesc::SetSacl Задает сведения в SACL. Если в дескрипторе безопасности уже присутствует saCL, он заменяется.
CSecurityDesc::ToString Преобразует дескриптор безопасности в строковый формат.

Открытые операторы

Имя Описание
CSecurityDesc::operator const SECURITY_DESCRIPTOR * Возвращает указатель на структуру SECURITY_DESCRIPTOR .
CSecurityDesc::operator = Оператор присвоения.

Замечания

Структура SECURITY_DESCRIPTOR содержит сведения о безопасности, связанные с объектом. Приложения используют эту структуру для задания и запроса состояния безопасности объекта. См. также AtlGetSecurityDescriptor.

Приложения не должны изменять структуру SECURITY_DESCRIPTOR напрямую и вместо этого следует использовать предоставленные методы класса.

Общие сведения о модели управления доступом в Windows см. в контроль доступа в пакете SDK для Windows.

Требования

Заголовок: atlsecurity.h

CSecurityDesc::CSecurityDesc

Конструктор.

CSecurityDesc() throw();
CSecurityDesc(const CSecurityDesc& rhs) throw(... );
CSecurityDesc(const SECURITY_DESCRIPTOR& rhs) throw(...);

Параметры

rhs
CSecurityDesc Объект или SECURITY_DESCRIPTOR структура, назначаемая новому CSecurityDesc объекту.

Замечания

Объект CSecurityDesc можно создать при необходимости с помощью SECURITY_DESCRIPTOR структуры или ранее определенного CSecurityDesc объекта.

CSecurityDesc::~CSecurityDesc

Деструктор

virtual ~CSecurityDesc() throw();

Замечания

Деструктор освобождает все выделенные ресурсы.

CSecurityDesc::FromString

Преобразует дескриптор безопасности в допустимый дескриптор функциональной безопасности.

bool FromString(LPCTSTR pstr) throw(...);

Параметры

pstr
Указатель на строку, завершающую значение NULL, которая содержит дескриптор безопасности формата строки, который необходимо преобразовать.

Возвращаемое значение

Возвращает значение true при успешном выполнении. Создает исключение при сбое.

Замечания

Строку можно создать с помощью CSecurityDesc::ToString. Преобразование дескриптора безопасности в строку упрощает хранение и передачу.

Этот метод вызывает ConvertStringSecurityDescriptorToSecurityDescriptor.

CSecurityDesc::GetControl

Извлекает данные элемента управления из дескриптора безопасности.

bool GetControl(SECURITY_DESCRIPTOR_CONTROL* psdc) const throw();

Параметры

psdc
Указатель на SECURITY_DESCRIPTOR_CONTROL структуру, которая получает сведения об элементе управления дескриптора безопасности.

Возвращаемое значение

Возвращает значение true, если метод успешно выполнен, значение false, если он завершается ошибкой.

Замечания

Этот метод вызывает GetSecurityDescriptorControl.

CSecurityDesc::GetDacl

Извлекает сведения о списке управления доступом (DACL) из дескриптора безопасности.

bool GetDacl(
    CDacl* pDacl,
    bool* pbPresent = NULL,
    bool* pbDefaulted = NULL) const throw(...);

Параметры

pDacl
Указатель на CDacl структуру, в которой хранится копия DACL дескриптора безопасности. Если существует дискреционный ACL, метод задает pDacl адресу дискреционного ACL дескриптора безопасности. Если дискреционный список ACL не существует, значение не сохраняется.

pbPresent
Указатель на значение, указывающее на наличие дискреционного списка ACL в указанном дескрипторе безопасности. Если дескриптор безопасности содержит дискреционный список ACL, этот параметр имеет значение true. Если дескриптор безопасности не содержит дискреционный список ACL, этот параметр имеет значение false.

pbDefaulted
Указатель на флаг, установленный на значение флага SE_DACL_DEFAULTED в SECURITY_DESCRIPTOR_CONTROL структуре, если для дескриптора безопасности существует дискреционный список ACL. Если этот флаг имеет значение true, дискреционный ACL был получен механизмом по умолчанию; Значение , если значение false, список ACL для дискреционных пользователей был явно указан пользователем.

Возвращаемое значение

Возвращает значение true, если метод успешно выполнен, значение false, если он завершается ошибкой.

CSecurityDesc::GetGroup

Извлекает данные основной группы из дескриптора безопасности.

bool GetGroup(
    CSid* pSid,
    bool* pbDefaulted = NULL) const throw(...);

Параметры

Psid
Указатель на CSid (идентификатор безопасности), который получает копию группы, хранящейся в CDacl.

pbDefaulted
Указатель на флаг, заданный для значения флага SE_GROUP_DEFAULTED в структуре при возврате SECURITY_DESCRIPTOR_CONTROL метода.

Возвращаемое значение

Возвращает значение true, если метод успешно выполнен, значение false, если он завершается ошибкой.

CSecurityDesc::GetOwner

Извлекает сведения владельца из дескриптора безопасности.

bool GetOwner(
    CSid* pSid,
    bool* pbDefaulted = NULL) const throw(...);

Параметры

Psid
Указатель на CSid (идентификатор безопасности), который получает копию группы, хранящейся в CDacl.

pbDefaulted
Указатель на флаг, заданный для значения флага SE_OWNER_DEFAULTED в структуре при возврате SECURITY_DESCRIPTOR_CONTROL метода.

Возвращаемое значение

Возвращает значение true, если метод успешно выполнен, значение false, если он завершается ошибкой.

CSecurityDesc::GetPSECURITY_DESCRIPTOR

Возвращает указатель на структуру SECURITY_DESCRIPTOR .

const SECURITY_DESCRIPTOR* GetPSECURITY_DESCRIPTOR() const throw();

Возвращаемое значение

Возвращает указатель на структуру SECURITY_DESCRIPTOR .

CSecurityDesc::GetSacl

Извлекает сведения о списке управления доступом (SACL) системы из дескриптора безопасности.

bool GetSacl(
    CSacl* pSacl,
    bool* pbPresent = NULL,
    bool* pbDefaulted = NULL) const throw(...);

Параметры

pSacl
Указатель на CSacl структуру, в которой хранится копия SACL дескриптора безопасности. Если системный ACL существует, метод задает pSacl адресу системного ACL дескриптора безопасности. Если системный ACL не существует, значение не сохраняется.

pbPresent
Указатель на флаг набора методов, указывающий наличие системного ACL в указанном дескрипторе безопасности. Если дескриптор безопасности содержит системный ACL, этот параметр имеет значение true. Если дескриптор безопасности не содержит системный ACL, этот параметр имеет значение false.

pbDefaulted
Указатель на флаг, заданный для значения флага SE_SACL_DEFAULTED в SECURITY_DESCRIPTOR_CONTROL структуре, если системный ACL существует для дескриптора безопасности.

Возвращаемое значение

Возвращает значение true, если метод успешно выполнен, значение false, если он завершается ошибкой.

CSecurityDesc::IsDaclAutoInherited

Определяет, настроен ли список управления доступом (DACL) для поддержки автоматического распространения.

bool IsDaclAutoInherited() const throw();

Возвращаемое значение

Возвращает значение true, если дескриптор безопасности содержит DACL, настроенный для поддержки автоматического распространения наследуемых записей управления доступом (ACEs) к существующим дочерним объектам. В противном случае возвращает значение false.

Замечания

Система задает этот бит при выполнении алгоритма автоматического наследования для объекта и существующих дочерних объектов.

CSecurityDesc::IsDaclDefaulted

Определяет, настроен ли дескриптор безопасности с помощью списка управления доступом по умолчанию (DACL).

bool IsDaclDefaulted() const throw();

Возвращаемое значение

Возвращает значение true, если дескриптор безопасности содержит daCL по умолчанию, значение false в противном случае.

Замечания

Этот флаг может повлиять на то, как система обрабатывает DACL в отношении наследования записи управления доступом (ACE). Например, если создатель объекта не указывает DACL, объект получает daCL по умолчанию из маркера доступа создателя. Система игнорирует этот флаг, если флаг SE_DACL_PRESENT не задан.

Этот флаг используется для определения способа вычисления окончательного DACL объекта и не хранится физически в элементе управления дескриптором безопасности защищаемого объекта.

Чтобы задать этот флаг, используйте метод CSecurityDesc::SetDacl .

CSecurityDesc::IsDaclPresent

Определяет, содержит ли дескриптор безопасности список управления доступом (DACL).

bool IsDaclPresent() const throw();

Возвращаемое значение

Возвращает значение true, если дескриптор безопасности содержит DACL, значение false в противном случае.

Замечания

Если этот флаг не задан, или если этот флаг задан и daCL имеет значение NULL, дескриптор безопасности разрешает полный доступ ко всем пользователям.

Этот флаг используется для хранения сведений о безопасности, указанных вызывающим объектом, пока дескриптор безопасности не связан с защищаемым объектом. После того как дескриптор безопасности связан с защищаемым объектом, флаг SE_DACL_PRESENT всегда устанавливается в элементе управления дескриптором безопасности.

Чтобы задать этот флаг, используйте метод CSecurityDesc::SetDacl .

CSecurityDesc::IsDaclProtected

Определяет, настроен ли список управления доступом (DACL) для предотвращения изменений.

bool IsDaclProtected() const throw();

Возвращаемое значение

Возвращает значение true, если DACL настроен для предотвращения изменения дескриптора безопасности с помощью наследуемых записей управления доступом (ACEs). В противном случае возвращает значение false.

Замечания

Чтобы задать этот флаг, используйте метод CSecurityDesc::SetDacl .

Этот метод поддерживает автоматическое распространение наследуемых acEs.

CSecurityDesc::IsGroupDefaulted

Определяет, был ли идентификатор безопасности группы безопасности (SID) дескриптора безопасности по умолчанию.

bool IsGroupDefaulted() const throw();

Возвращаемое значение

Возвращает значение true, если механизм по умолчанию, а не исходный поставщик дескриптора безопасности, предоставил идентификатор безопасности группы дескриптора безопасности. В противном случае возвращает значение false.

Замечания

Чтобы задать этот флаг, используйте метод CSecurityDesc::SetGroup .

CSecurityDesc::IsOwnerDefaulted

Определяет, задан ли идентификатор безопасности владельца дескриптора безопасности по умолчанию.

bool IsOwnerDefaulted() const throw();

Возвращаемое значение

Возвращает значение true, если механизм по умолчанию, а не исходный поставщик дескриптора безопасности, предоставил идентификатор безопасности владельца дескриптора безопасности. В противном случае возвращает значение false.

Замечания

Чтобы задать этот флаг, используйте метод CSecurityDesc::SetOwner .

CSecurityDesc::IsSaclAutoInherited

Определяет, настроен ли системный список управления доступом (SACL) для поддержки автоматического распространения.

bool IsSaclAutoInherited() const throw();

Возвращаемое значение

Возвращает значение true, если дескриптор безопасности содержит saCL, настроенный для поддержки автоматического распространения наследуемых записей управления доступом (ACEs) на существующие дочерние объекты. В противном случае возвращает значение false.

Замечания

Система задает этот бит при выполнении алгоритма автоматического наследования для объекта и существующих дочерних объектов.

CSecurityDesc::IsSaclDefaulted

Определяет, настроен ли дескриптор безопасности со списком управления доступом по умолчанию (SACL).

bool IsSaclDefaulted() const throw();

Возвращаемое значение

Возвращает значение true, если дескриптор безопасности содержит значение SACL по умолчанию, значение false в противном случае.

Замечания

Этот флаг может повлиять на то, как система обрабатывает SACL в отношении наследования записи управления доступом (ACE). Система игнорирует этот флаг, если флаг SE_SACL_PRESENT не задан.

Чтобы задать этот флаг, используйте метод CSecurityDesc::SetSacl .

CSecurityDesc::IsSaclPresent

Определяет, содержит ли дескриптор безопасности список системного управления доступом (SACL).

bool IsSaclPresent() const throw();

Возвращаемое значение

Возвращает значение true, если дескриптор безопасности содержит saCL, значение false в противном случае.

Замечания

Чтобы задать этот флаг, используйте метод CSecurityDesc::SetSacl .

CSecurityDesc::IsSaclProtected

Определяет, настроен ли системный список управления доступом (SACL) для предотвращения изменений.

bool IsSaclProtected() const throw();

Возвращаемое значение

Возвращает значение true, если saCL настроен для предотвращения изменения дескриптора безопасности с помощью наследуемых записей управления доступом (ACEs). В противном случае возвращает значение false.

Замечания

Чтобы задать этот флаг, используйте метод CSecurityDesc::SetSacl .

Этот метод поддерживает автоматическое распространение наследуемых acEs.

CSecurityDesc::IsSelfRelative

Определяет, находится ли дескриптор безопасности в автономном формате.

bool IsSelfRelative() const throw();

Возвращаемое значение

Возвращает значение true, если дескриптор безопасности находится в автономном формате со всеми сведениями о безопасности в непрерывном блоке памяти. Возвращает значение false, если дескриптор безопасности находится в абсолютном формате. Дополнительные сведения см . в описании дескрипторов абсолютной и относительной безопасности.

CSecurityDesc::MakeAbsolute

Вызовите этот метод, чтобы преобразовать дескриптор безопасности в абсолютный формат.

bool MakeAbsolute() throw(...);

Возвращаемое значение

Возвращает значение true, если метод успешно выполнен, значение false в противном случае.

Замечания

Дескриптор безопасности в абсолютном формате содержит указатели на содержащиеся в нем сведения, а не сами сведения. Дескриптор безопасности в автономном формате содержит сведения в непрерывном блоке памяти. В дескрипторе безопасности, структура всегда запускает информацию, но другие компоненты дескриптора SECURITY_DESCRIPTOR безопасности могут следовать структуре в любом порядке. Вместо использования адресов памяти компоненты дескриптора безопасности самостоятельно определяются смещениями с начала дескриптора безопасности. Этот формат полезен, если дескриптор безопасности должен храниться на диске или передаваться с помощью протокола связи. Дополнительные сведения см . в описании дескрипторов абсолютной и относительной безопасности.

CSecurityDesc::MakeSelfRelative

Вызовите этот метод, чтобы преобразовать дескриптор безопасности в автономный формат.

bool MakeSelfRelative() throw(...);

Возвращаемое значение

Возвращает значение true, если метод успешно выполнен, значение false в противном случае.

Замечания

Дескриптор безопасности в абсолютном формате содержит указатели на содержащиеся в ней сведения, а не сами данные. Дескриптор безопасности в автономном формате содержит сведения в непрерывном блоке памяти. В дескрипторе безопасности, структура всегда запускает информацию, но другие компоненты дескриптора SECURITY_DESCRIPTOR безопасности могут следовать структуре в любом порядке. Вместо использования адресов памяти компоненты дескриптора безопасности определяются смещениями с начала дескриптора безопасности. Этот формат полезен, если дескриптор безопасности должен храниться на диске или передаваться с помощью протокола связи. Дополнительные сведения см . в описании дескрипторов абсолютной и относительной безопасности.

CSecurityDesc::operator =

Оператор присвоения.

CSecurityDesc& operator= (const SECURITY_DESCRIPTOR& rhs) throw(...);
CSecurityDesc& operator= (const CSecurityDesc& rhs) throw(...);

Параметры

rhs
Структура SECURITY_DESCRIPTOR или CSecurityDesc объект, назначаемый объекту CSecurityDesc .

Возвращаемое значение

Возвращает обновленный CSecurityDesc объект.

CSecurityDesc::operator const SECURITY_DESCRIPTOR *

Приведение значения к указателю на структуру SECURITY_DESCRIPTOR .

operator const SECURITY_DESCRIPTOR *() const throw();

CSecurityDesc::SetControl

Устанавливает управляющие биты дескриптора безопасности.

bool SetControl(
    SECURITY_DESCRIPTOR_CONTROL ControlBitsOfInterest,
    SECURITY_DESCRIPTOR_CONTROL ControlBitsToSet) throw();

Параметры

ControlBitsOfInterest
Маска SECURITY_DESCRIPTOR_CONTROL, указывающая биты элемента управления, заданные. Список флагов, которые можно задать, см. в разделе SetSecurityDescriptorControl.

ControlBitsToSet
Маска SECURITY_DESCRIPTOR_CONTROL, указывающая новые значения для битов элемента управления, указанных маской ControlBitsOfInterest . Этот параметр может быть сочетанием флагов, перечисленных для параметра ControlBitsOfInterest .

Возвращаемое значение

Возвращает значение true, если операция выполнена успешно; в противном случае — значение false.

Замечания

Этот метод вызывает SetSecurityDescriptorControl.

CSecurityDesc::SetDacl

Задает сведения в списке управления доступом (DACL). Если daCL уже присутствует в дескрипторе безопасности, он заменяется.

inline void SetDacl(
    bool bPresent = true,
    bool bDefaulted = false) throw(...);

inline void SetDacl(
    const CDacl& Dacl,
    bool bDefaulted = false) throw(...);

Параметры

Dacl
Ссылка на объект, указывающий CDacl DACL для дескриптора безопасности. Этот параметр не должен иметь значение NULL. Чтобы задать значение NULL DACL в дескрипторе безопасности, первая форма метода должна использоваться с параметром bPresent , равным false.

bPresent
Указывает флаг, указывающий наличие DACL в дескрипторе безопасности. Если этот параметр имеет значение true, метод задает флаг SE_DACL_PRESENT в SECURITY_DESCRIPTOR_CONTROL структуре и использует значения в параметрах Dacl и bDefaulted . Если значение равно false, метод очищает флаг SE_DACL_PRESENT и bDefaulted игнорируется.

bDefaulted
Указывает флаг, указывающий источник DACL. Если этот флаг имеет значение true, DACL извлекается некоторым механизмом по умолчанию. Если значение false, DACL было явно указано пользователем. Метод сохраняет это значение в флаге SECURITY_DESCRIPTOR_CONTROL SE_DACL_DEFAULTED структуры. Если этот параметр не указан, флаг SE_DACL_DEFAULTED очищается.

Возвращаемое значение

Возвращает значение true, если операция выполнена успешно; в противном случае — значение false.

Замечания

Существует важное различие между пустым и несуществующим DACL. Если daCL пуст, он не содержит записей управления доступом и не предоставляет явным образом права доступа. В результате доступ к объекту неявно запрещен. Если объект не имеет DACL, с другой стороны, защита не назначается объекту, а любой запрос доступа предоставляется.

CSecurityDesc::SetGroup

Задает основную группу сведений о дескрипторе безопасности абсолютного формата, заменив все сведения о первичной группе, которые уже присутствуют.

bool SetGroup(const CSid& Sid, bool bDefaulted = false) throw(...);

Параметры

Sid
Ссылка на объект CSid для новой первичной группы дескриптора безопасности. Этот параметр не должен иметь значение NULL. Дескриптор безопасности можно пометить как не имеющий DACL или SACL, но он должен иметь группу и владельца, даже это идентификатор NULL (который является встроенным идентификатором БЕЗОПАСНОСТИ с особым значением).

bDefaulted
Указывает, была ли основная информация группы производными от механизма по умолчанию. Если это значение имеет значение true, это сведения по умолчанию, а метод сохраняет это значение в виде флага SE_GROUP_DEFAULTED в SECURITY_DESCRIPTOR_CONTROL структуре. Если этот параметр равен нулю, флаг SE_GROUP_DEFAULTED очищается.

Возвращаемое значение

Возвращает значение true, если операция выполнена успешно; в противном случае — значение false.

CSecurityDesc::SetOwner

Задает сведения о владельцах дескриптора безопасности абсолютного формата. Он заменяет все сведения владельца, уже представленные.

bool SetOwner(const CSid& Sid, bool bDefaulted = false) throw(...);

Параметры

Sid
Объект CSid для нового владельца дескриптора безопасности. Этот параметр не должен иметь значение NULL.

bDefaulted
Указывает, является ли информация владельца производным от механизма по умолчанию. Если это значение имеет значение true, это сведения по умолчанию. Метод сохраняет это значение в виде флага SE_OWNER_DEFAULTED в SECURITY_DESCRIPTOR_CONTROL структуре. Если этот параметр равен нулю, флаг SE_OWNER_DEFAULTED очищается.

Возвращаемое значение

Возвращает значение true, если операция выполнена успешно; в противном случае — значение false.

CSecurityDesc::SetSacl

Задает сведения в системном списке управления доступом (SACL). Если в дескрипторе безопасности уже присутствует saCL, он заменяется.

bool SetSacl(const CSacl& Sacl, bool bDefaulted = false) throw(...);

Параметры

Sacl
Указатель на объект, указывающий CSacl SACL для дескриптора безопасности. Этот параметр не должен иметь значение NULL и должен быть объектом CSacl. В отличие от DACLs, нет разницы между NULL и пустым SACL, так как объекты SACL не указывают права доступа, только данные аудита.

bDefaulted
Указывает флаг, указывающий источник SACL. Если этот флаг имеет значение true, saCL извлекается некоторым механизмом по умолчанию. Если значение false, saCL был явно указан пользователем. Метод сохраняет это значение в флаге SECURITY_DESCRIPTOR_CONTROL SE_SACL_DEFAULTED структуры. Если этот параметр не указан, флаг SE_SACL_DEFAULTED очищается.

Возвращаемое значение

Возвращает значение true, если операция выполнена успешно; в противном случае — значение false.

CSecurityDesc::ToString

Преобразует дескриптор безопасности в строковый формат.

bool ToString(
    CString* pstr, SECURITY_INFORMATION si = OWNER_SECURITY_INFORMATION |
    GROUP_SECURITY_INFORMATION | DACL_SECURITY_INFORMATION |
    SACL_SECURITY_INFORMATION) const throw(...);

Параметры

pstr
Указатель на строку, завершающую значение NULL, которая получит дескриптор безопасности в формате строки.

Si
Указывает сочетание битовых флагов SECURITY_INFORMATION, чтобы указать компоненты дескриптора безопасности, которые необходимо включить в выходную строку.

Возвращаемое значение

Возвращает значение true, если операция выполнена успешно; в противном случае — значение false.

Замечания

После того как дескриптор безопасности находится в строковом формате, его можно легко хранить или передавать. CSecurityDesc::FromString Используйте метод для преобразования строки обратно в дескриптор безопасности.

Параметр si может содержать следующие флаги SECURITY_INFORMATION:

Значение Значение
OWNER_SECURITY_INFORMATION Включите владельца.
GROUP_SECURITY_INFORMATION Включите основную группу.
DACL_SECURITY_INFORMATION Включите DACL.
SACL_SECURITY_INFORMATION Включите SACL.

Если значение DACL равно NULL, а бит управления SE_DACL_PRESENT задан в дескрипторе безопасности ввода, метод завершается ошибкой.

Если значение DACL равно NULL, а бит управления SE_DACL_PRESENT не задан в дескрипторе входной безопасности, результирующая строка дескриптора безопасности не имеет компонента D: . Дополнительные сведения см. в разделе "Формат строки дескриптора безопасности".

Этот метод вызывает ConvertStringSecurityDescriptorToSecurityDescriptor.

См. также

Пример безопасности
SECURITY_DESCRIPTOR
Общие сведения о классе
Глобальные функции безопасности