Compartir a través de


Clase CSecurityDesc

Esta clase es un contenedor de la estructura SECURITY_DESCRIPTOR.

Importante

Esta clase y sus miembros no se pueden usar en las aplicaciones que se ejecutan en Windows Runtime.

Sintaxis

class CSecurityDesc

Miembros

Constructores públicos

Nombre Descripción
CSecurityDesc::CSecurityDesc Constructor .
CSecurityDesc::~CSecurityDesc El destructor .

Métodos públicos

Nombre Descripción
CSecurityDesc::FromString Convierte un descriptor de seguridad de formato de cadena en un descriptor de seguridad funcional válido.
CSecurityDesc::GetControl Recupera información de control del descriptor de seguridad.
CSecurityDesc::GetDacl Recupera información de la lista de control de acceso discrecional (DACL) del descriptor de seguridad.
CSecurityDesc::GetGroup Recupera la información del grupo principal del descriptor de seguridad.
CSecurityDesc::GetOwner Recupera la información del propietario del descriptor de seguridad.
CSecurityDesc::GetPSECURITY_DESCRIPTOR Devuelve un puntero a la estructura SECURITY_DESCRIPTOR.
CSecurityDesc::GetSacl Recupera información de la lista de control de acceso del sistema (SACL) del descriptor de seguridad.
CSecurityDesc::IsDaclAutoInherited Determina si la DACL está configurada para admitir la propagación automática.
CSecurityDesc::IsDaclDefaulted Determina si el descriptor de seguridad está configurado con una DACL predeterminada.
CSecurityDesc::IsDaclPresent Determina si el descriptor de seguridad contiene una DACL.
CSecurityDesc::IsDaclProtected Determina si la DACL está configurada para evitar modificaciones.
CSecurityDesc::IsGroupDefaulted Determina si el identificador de seguridad (SID) del descriptor de seguridad se estableció de forma predeterminada.
CSecurityDesc::IsOwnerDefaulted Determina si el SID del propietario del descriptor de seguridad se estableció de forma predeterminada.
CSecurityDesc::IsSaclAutoInherited Determina si la SACL está configurada para admitir la propagación automática.
CSecurityDesc::IsSaclDefaulted Determina si el descriptor de seguridad está configurado con una SACL predeterminada.
CSecurityDesc::IsSaclPresent Determina si el descriptor de seguridad contiene una SACL.
CSecurityDesc::IsSaclProtected Determina si la SACL está configurada para evitar modificaciones.
CSecurityDesc::IsSelfRelative Determina si el descriptor de seguridad está en formato autorrelativo.
CSecurityDesc::MakeAbsolute Llame a este método para convertir el descriptor de seguridad en formato absoluto.
CSecurityDesc::MakeSelfRelative Llame a este método para convertir el descriptor de seguridad en formato autorrelativo.
CSecurityDesc::SetControl Establece los bits de control de un descriptor de seguridad.
CSecurityDesc::SetDacl Establece información en una DACL. Si una DACL ya está presente en el descriptor de seguridad, se reemplaza.
CSecurityDesc::SetGroup Establece la información del grupo principal de un descriptor de seguridad de formato absoluto, y reemplaza cualquier información de grupo principal ya presente.
CSecurityDesc::SetOwner Establece la información del propietario de un descriptor de seguridad de formato absoluto, reemplazando cualquier información de propietario ya presente.
CSecurityDesc::SetSacl Establece información en una SACL. Si una SACL ya está presente en el descriptor de seguridad, se reemplaza.
CSecurityDesc::ToString Convierte un descriptor de seguridad en un formato de cadena.

Operadores públicos

Nombre Descripción
CSecurityDesc::operator const SECURITY_DESCRIPTOR * Devuelve un puntero a la estructura SECURITY_DESCRIPTOR.
CSecurityDesc::operator = Operador de asignación.

Comentarios

La estructura SECURITY_DESCRIPTOR contiene la información de seguridad asociada a un objeto. Las aplicaciones usan esta estructura para establecer y consultar el estado de seguridad de un objeto. Consulte también AtlGetSecurityDescriptor.

Las aplicaciones no deben modificar la estructura SECURITY_DESCRIPTOR directamente y, en su lugar, deben usar los métodos de clase proporcionados.

Para una introducción al modelo de control de acceso en Windows, consulte Control de acceso en Windows SDK.

Requisitos

Encabezado: atlsecurity.h

CSecurityDesc::CSecurityDesc

Constructor .

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

Parámetros

rhs
Objeto CSecurityDesc o estructura SECURITY_DESCRIPTOR que se va a asignar al nuevo objeto CSecurityDesc.

Comentarios

Opcionalmente, el objeto CSecurityDesc se puede crear mediante una estructura SECURITY_DESCRIPTOR o un objeto CSecurityDesc definido previamente.

CSecurityDesc::~CSecurityDesc

El destructor .

virtual ~CSecurityDesc() throw();

Comentarios

El destructor libera todos los recursos asignados.

CSecurityDesc::FromString

Convierte un descriptor de seguridad de formato de cadena en un descriptor de seguridad funcional válido.

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

Parámetros

pstr
Puntero a una cadena terminada en null que contiene el descriptor de seguridad de formato de cadena que se va a convertir.

Valor devuelto

Devuelve true en caso de éxito. Produce una excepción en caso de error.

Comentarios

La cadena se puede crear mediante CSecurityDesc::ToString. La conversión del descriptor de seguridad en una cadena facilita el almacenamiento y la transmisión.

Este método llama a ConvertStringSecurityDescriptorToSecurityDescriptor.

CSecurityDesc::GetControl

Recupera información de control del descriptor de seguridad.

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

Parámetros

psdc
Puntero a una estructura SECURITY_DESCRIPTOR_CONTROL que recibe la información de control del descriptor de seguridad.

Valor devuelto

Devuelve true si el método se realiza correctamente, false si se produce un error.

Comentarios

Este método llama a GetSecurityDescriptorControl.

CSecurityDesc::GetDacl

Recupera información de la lista de control de acceso discrecional (DACL) del descriptor de seguridad.

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

Parámetros

pDacl
Puntero a una estructura CDacl en la que se va a almacenar una copia de la DACL del descriptor de seguridad. Si existe una ACL discrecional, el método establece pDacl en la dirección de la ACL discrecional del descriptor de seguridad. Si no existe una ACL discrecional, no se almacena ningún valor.

pbPresent
Puntero a un valor que indica la presencia de una ACL discrecional en el descriptor de seguridad especificado. Si el descriptor de seguridad contiene una ACL discrecional, este parámetro se establece en true. Si el descriptor de seguridad no contiene una ACL discrecional, este parámetro se establece en false.

pbDefaulted
Puntero a una marca establecida en el valor de la marca de SE_DACL_DEFAULTED en la estructura SECURITY_DESCRIPTOR_CONTROL si existe una ACL discrecional para el descriptor de seguridad. Si esta marca es true, la ACL discrecional se recuperó mediante un mecanismo predeterminado; si es false, un usuario especificó la ACL discrecional de forma explícita.

Valor devuelto

Devuelve true si el método se realiza correctamente, false si se produce un error.

CSecurityDesc::GetGroup

Recupera la información del grupo principal del descriptor de seguridad.

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

Parámetros

pSid
Puntero a un CSid (identificador de seguridad) que recibe una copia del grupo almacenado en CDacl.

pbDefaulted
Puntero a una marca establecida en el valor de la marca SE_GROUP_DEFAULTED en la estructura SECURITY_DESCRIPTOR_CONTROL cuando el método devuelve.

Valor devuelto

Devuelve true si el método se realiza correctamente, false si se produce un error.

CSecurityDesc::GetOwner

Recupera la información del propietario del descriptor de seguridad.

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

Parámetros

pSid
Puntero a un CSid (identificador de seguridad) que recibe una copia del grupo almacenado en CDacl.

pbDefaulted
Puntero a una marca establecida en el valor de la marca SE_OWNER_DEFAULTED en la estructura SECURITY_DESCRIPTOR_CONTROL cuando el método devuelve.

Valor devuelto

Devuelve true si el método se realiza correctamente, false si se produce un error.

CSecurityDesc::GetPSECURITY_DESCRIPTOR

Devuelve un puntero a la estructura SECURITY_DESCRIPTOR.

const SECURITY_DESCRIPTOR* GetPSECURITY_DESCRIPTOR() const throw();

Valor devuelto

Devuelve un puntero a la estructura SECURITY_DESCRIPTOR.

CSecurityDesc::GetSacl

Recupera información de la lista de control de acceso del sistema (SACL) del descriptor de seguridad.

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

Parámetros

pSacl
Puntero a una estructura CSacl en la que se va a almacenar una copia de la SACL del descriptor de seguridad. Si existe una ACL del sistema, el método establece pSacl en la dirección de la ACL del sistema del descriptor de seguridad. Si no existe una ACL del sistema, no se almacena ningún valor.

pbPresent
Puntero a una marca que establece el método para indicar la presencia de una ACL del sistema en el descriptor de seguridad especificado. Si el descriptor de seguridad contiene una ACL del sistema, este parámetro se establece en true. Si el descriptor de seguridad no contiene una ACL del sistema, este parámetro se establece en false.

pbDefaulted
Puntero a una marca establecida en el valor de la marca de SE_SACL_DEFAULTED en la estructura SECURITY_DESCRIPTOR_CONTROL si existe una ACL del sistema para el descriptor de seguridad.

Valor devuelto

Devuelve true si el método se realiza correctamente, false si se produce un error.

CSecurityDesc::IsDaclAutoInherited

Determina si la lista de control de acceso discrecional (DACL) está configurada para admitir la propagación automática.

bool IsDaclAutoInherited() const throw();

Valor devuelto

Devuelve true si el descriptor de seguridad contiene una DACL que está configurada para admitir la propagación automática de entradas de control de acceso (ACE) que se pueden heredar a objetos secundarios existentes. De lo contrario, devuelve false.

Comentarios

El sistema establece esta parte cuando realiza el algoritmo de herencia automática para el objeto y sus objetos secundarios existentes.

CSecurityDesc::IsDaclDefaulted

Determina si el descriptor de seguridad está configurado con una lista de control de acceso discrecional (DACL) predeterminada.

bool IsDaclDefaulted() const throw();

Valor devuelto

Devuelve true si el descriptor de seguridad contiene una DACL predeterminada; en caso contrario, false.

Comentarios

Esta marca puede afectar a cómo el sistema trata la DACL, con respecto a la herencia de entrada de control de acceso (ACE). Por ejemplo, si el creador de un objeto no especifica una DACL, el objeto recibe la DACL predeterminada del token de acceso del creador. El sistema omite esta marca si no se establece la marca de SE_DACL_PRESENT.

Esta marca se usa para determinar cómo se va a calcular la DACL final del objeto y no se almacena físicamente en el control descriptor de seguridad del objeto protegible.

Para establecer esta marca, use el método CSecurityDesc::SetDacl.

CSecurityDesc::IsDaclPresent

Determina si el descriptor de seguridad contiene una lista de control de acceso discrecional (DACL).

bool IsDaclPresent() const throw();

Valor devuelto

Devuelve true si el descriptor de seguridad contiene una DACL; en caso contrario, false.

Comentarios

Si no se establece esta marca o si se establece esta marca y la DACL es null, el descriptor de seguridad permite el acceso total a todos los usuarios.

Esta marca se usa para contener la información de seguridad especificada por un llamador hasta que el descriptor de seguridad esté asociado a un objeto protegible. Una vez que el descriptor de seguridad está asociado a un objeto protegible, la marca SE_DACL_PRESENT siempre se establece en el control del descriptor de seguridad.

Para establecer esta marca, use el método CSecurityDesc::SetDacl.

CSecurityDesc::IsDaclProtected

Determina si la lista de control de acceso discrecional (DACL) está configurada para evitar modificaciones.

bool IsDaclProtected() const throw();

Valor devuelto

Devuelve true si la DACL está configurada para evitar que el descriptor de seguridad se modifique mediante entradas de control de acceso (ACE) que se pueden heredar. De lo contrario, devuelve false.

Comentarios

Para establecer esta marca, use el método CSecurityDesc::SetDacl.

Este método admite la propagación automática de ACE que se pueden heredar.

CSecurityDesc::IsGroupDefaulted

Determina si el identificador de seguridad (SID) del descriptor de seguridad se estableció de forma predeterminada.

bool IsGroupDefaulted() const throw();

Valor devuelto

Devuelve true si un mecanismo predeterminado, y no el proveedor original del descriptor de seguridad, proporcionó el SID de grupo del descriptor de seguridad. De lo contrario, devuelve false.

Comentarios

Para establecer esta marca, use el método CSecurityDesc::SetGroup.

CSecurityDesc::IsOwnerDefaulted

Determina si el identificador de seguridad (SID) del propietario del descriptor de seguridad se estableció de forma predeterminada.

bool IsOwnerDefaulted() const throw();

Valor devuelto

Devuelve true si un mecanismo predeterminado, y no el proveedor original del descriptor de seguridad, proporcionó el SID de propietario del descriptor de seguridad. De lo contrario, devuelve false.

Comentarios

Para establecer esta marca, use el método CSecurityDesc::SetOwner.

CSecurityDesc::IsSaclAutoInherited

Determina si la lista de control de acceso del sistema (SACL) está configurada para admitir la propagación automática.

bool IsSaclAutoInherited() const throw();

Valor devuelto

Devuelve true si el descriptor de seguridad contiene una SACL que está configurada para admitir la propagación automática de entradas de control de acceso (ACE) que se pueden heredar a objetos secundarios existentes. De lo contrario, devuelve false.

Comentarios

El sistema establece esta parte cuando realiza el algoritmo de herencia automática para el objeto y sus objetos secundarios existentes.

CSecurityDesc::IsSaclDefaulted

Determina si el descriptor de seguridad está configurado con una lista de control de acceso del sistema (SACL) predeterminada.

bool IsSaclDefaulted() const throw();

Valor devuelto

Devuelve true si el descriptor de seguridad contiene una SACL predeterminada; de lo contrario, false.

Comentarios

Esta marca puede afectar al modo en que el sistema trata la SACL, con respecto a la herencia de entrada de control de acceso (ACE). El sistema omite esta marca si no se establece la marca SE_SACL_PRESENT.

Para establecer esta marca, use el método CSecurityDesc::SetSacl.

CSecurityDesc::IsSaclPresent

Determina si el descriptor de seguridad contiene una lista de control de del sistema (SACL).

bool IsSaclPresent() const throw();

Valor devuelto

Devuelve true si el descriptor de seguridad contiene una SACL; de lo contrario, false.

Comentarios

Para establecer esta marca, use el método CSecurityDesc::SetSacl.

CSecurityDesc::IsSaclProtected

Determina si la lista de control de acceso del sistema (SACL) está configurada para evitar modificaciones.

bool IsSaclProtected() const throw();

Valor devuelto

Devuelve true si SACL está configurado para evitar que el descriptor de seguridad se modifique mediante entradas de control de acceso (ACE) que se pueden heredar. De lo contrario, devuelve false.

Comentarios

Para establecer esta marca, use el método CSecurityDesc::SetSacl.

Este método admite la propagación automática de ACE que se pueden heredar.

CSecurityDesc::IsSelfRelative

Determina si el descriptor de seguridad está en formato autorrelativo.

bool IsSelfRelative() const throw();

Valor devuelto

Devuelve true si el descriptor de seguridad está en formato autorrelativo con toda la información de seguridad en un bloque contiguo de memoria. Devuelve false si el descriptor de seguridad está en formato absoluto. Para obtener más información, consulte Descriptores de seguridad absolutos y Self-Relative.

CSecurityDesc::MakeAbsolute

Llame a este método para convertir el descriptor de seguridad en formato absoluto.

bool MakeAbsolute() throw(...);

Valor devuelto

Devuelve true si el método se realiza correctamente; de lo contrario, false.

Comentarios

Un descriptor de seguridad en formato absoluto contiene punteros a la información que contiene, en lugar de la propia información. Un descriptor de seguridad en formato autorrelativo contiene la información en un bloque contiguo de memoria. En un descriptor de seguridad autorrelativo, una estructura SECURITY_DESCRIPTOR siempre inicia la información, pero los demás componentes del descriptor de seguridad pueden seguir la estructura en cualquier orden. En lugar de usar direcciones de memoria, los componentes del descriptor de seguridad autorrelativo se identifican mediante desplazamientos desde el principio del descriptor de seguridad. Este formato es útil cuando un descriptor de seguridad debe almacenarse en un disco o transmitirse mediante un protocolo de comunicaciones. Para obtener más información, consulte Descriptores de seguridad absolutos y Self-Relative.

CSecurityDesc::MakeSelfRelative

Llame a este método para convertir el descriptor de seguridad en formato autorrelativo.

bool MakeSelfRelative() throw(...);

Valor devuelto

Devuelve true si el método se realiza correctamente; de lo contrario, false.

Comentarios

Un descriptor de seguridad en formato absoluto contiene punteros a la información que contiene, en lugar de contener la propia información. Un descriptor de seguridad en formato autorrelativo contiene la información en un bloque contiguo de memoria. En un descriptor de seguridad autorrelativo, una estructura SECURITY_DESCRIPTOR siempre inicia la información, pero los demás componentes del descriptor de seguridad pueden seguir la estructura en cualquier orden. En lugar de usar direcciones de memoria, los componentes del descriptor de seguridad se identifican mediante desplazamientos desde el principio del descriptor de seguridad. Este formato es útil cuando un descriptor de seguridad debe almacenarse en un disco o transmitirse mediante un protocolo de comunicaciones. Para obtener más información, consulte Descriptores de seguridad absolutos y Self-Relative.

CSecurityDesc::operator =

Operador de asignación.

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

Parámetros

rhs
Estructura SECURITY_DESCRIPTOR u objeto CSecurityDesc que se va a asignar al objeto CSecurityDesc.

Valor devuelto

Devuelve el objeto CSecurityDesc actualizado.

CSecurityDesc::operator const SECURITY_DESCRIPTOR *

Convierte un valor en un puntero a la estructura SECURITY_DESCRIPTOR.

operator const SECURITY_DESCRIPTOR *() const throw();

CSecurityDesc::SetControl

Establece los bits de control de un descriptor de seguridad.

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

Parámetros

ControlBitsOfInterest
Máscara de SECURITY_DESCRIPTOR_CONTROL que indica los bits de control que se van a establecer. Para obtener una lista de las marcas que se pueden establecer, consulte SetSecurityDescriptorControl.

ControlBitsToSet
Máscara SECURITY_DESCRIPTOR_CONTROL que indica los nuevos valores para los bits de control que se especifican en la máscara ControlBitsOfInterest. Este parámetro puede ser una combinación de las marcas enumeradas para el parámetro ControlBitsOfInterest.

Valor devuelto

Devuelve true si la operación se realiza correctamente; de lo contrario, devuelve false.

Comentarios

Este método llama a SetSecurityDescriptorControl.

CSecurityDesc::SetDacl

Establece la información en una lista de control de acceso discrecional (DACL). Si una DACL ya está presente en el descriptor de seguridad, se reemplaza.

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

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

Parámetros

Dacl
Referencia a un objeto CDacl que especifica la DACL para el descriptor de seguridad. Este parámetro no debe ser null. Para establecer una DACL null en el descriptor de seguridad, se debe usar la primera forma del método con bPresent establecido en false.

bPresent
Especifica una marca que indica la presencia de una DACL en el descriptor de seguridad. Si este parámetro es true, el método establece la marca SE_DACL_PRESENT en la estructura SECURITY_DESCRIPTOR_CONTROL y usa los valores de los parámetros Dacl y bDefaulted. Si es false, el método borra la marca SE_DACL_PRESENT y bDefaulted se omite.

bDefaulted
Especifica una marca que indica el origen de la DACL. Si esta marca es true, la DACL se ha recuperado mediante algún mecanismo predeterminado. Si es false, un usuario ha especificado la DACL de forma explícita. El método almacena este valor en la marca SE_DACL_DEFAULTED de la estructura SECURITY_DESCRIPTOR_CONTROL. Si no se especifica este parámetro, la marca SE_DACL_DEFAULTED se borra.

Valor devuelto

Devuelve true si la operación se realiza correctamente; de lo contrario, devuelve false.

Comentarios

Hay una diferencia importante entre una DACL vacía y una DACL inexistente. Cuando una DACL está vacía, no contiene entradas de control de acceso y no se han concedido derechos de acceso de forma explícita. Como resultado, se deniega implícitamente el acceso al objeto. Cuando un objeto no tiene DACL, por otro lado, no se asigna ninguna protección al objeto y se concede cualquier solicitud de acceso.

CSecurityDesc::SetGroup

Establece la información del grupo principal de un descriptor de seguridad de formato absoluto, y reemplaza cualquier información de grupo principal ya presente.

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

Parámetros

Sid
Referencia a un objeto CSid para el nuevo grupo principal del descriptor de seguridad. Este parámetro no debe ser null. Se puede marcar un descriptor de seguridad como carente de DACL o SACL, pero debe tener un grupo y un propietario, incluso si estos son el SID null (que es un SID integrado con un significado especial).

bDefaulted
Indica si la información del grupo principal se ha derivado de un mecanismo predeterminado. Si este valor es true, es información predeterminada y el método almacena este valor como la marca SE_GROUP_DEFAULTED en la estructura SECURITY_DESCRIPTOR_CONTROL. Si este parámetro es cero, se borra la marca SE_GROUP_DEFAULTED.

Valor devuelto

Devuelve true si la operación se realiza correctamente; de lo contrario, devuelve false.

CSecurityDesc::SetOwner

Establece la información del propietario de un descriptor de seguridad de formato absoluto. Reemplaza cualquier información de propietario que ya esté presente.

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

Parámetros

Sid
Objeto CSid para el nuevo propietario principal del descriptor de seguridad. Este parámetro no debe ser null.

bDefaulted
Indica si la información del propietario se deriva de un mecanismo predeterminado. Si este valor es true, es la información predeterminada. El método almacena este valor como la marca SE_OWNER_DEFAULTED en la estructura SECURITY_DESCRIPTOR_CONTROL. Si este parámetro es cero, se borra la marca SE_OWNER_DEFAULTED.

Valor devuelto

Devuelve true si la operación se realiza correctamente; de lo contrario, devuelve false.

CSecurityDesc::SetSacl

Establece información en una lista de control de acceso del sistema (SACL). Si una SACL ya está presente en el descriptor de seguridad, se reemplaza.

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

Parámetros

Sacl
Puntero a un objeto CSacl que especifica la SACL para el descriptor de seguridad. Este parámetro no debe ser null y debe ser un objeto CSacl. Al contrario que las DACL, no hay ninguna diferencia entre una SACL null y una SACL vacía, ya que los objetos SACL no especifican derechos de acceso, solo la información de auditoría.

bDefaulted
Especifica una marca que indica el origen de la SACL. Si esta marca es true, el SACL se ha recuperado mediante algún mecanismo predeterminado. Si es false, un usuario ha especificado la SACL de forma explícita. El método almacena este valor en la marca SE_SACL_DEFAULTED de la estructura SECURITY_DESCRIPTOR_CONTROL. Si no se especifica este parámetro, la marca SE_SACL_DEFAULTED se borra.

Valor devuelto

Devuelve true si la operación se realiza correctamente; de lo contrario, devuelve false.

CSecurityDesc::ToString

Convierte un descriptor de seguridad en un formato de cadena.

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

Parámetros

pstr
Puntero a una cadena terminada en null que recibirá el descriptor de seguridad de formato de cadena.

si
Especifica una combinación de marcas de bits de SECURITY_INFORMATION para indicar los componentes del descriptor de seguridad que se van a incluir en la cadena de salida.

Valor devuelto

Devuelve true si la operación se realiza correctamente; de lo contrario, devuelve false.

Comentarios

Una vez que el descriptor de seguridad está en formato de cadena, se puede almacenar o transmitir más fácilmente. Use el método CSecurityDesc::FromString para volver a convertir la cadena en un descriptor de seguridad.

El parámetro si puede contener las marcas de SECURITY_INFORMATION siguientes:

Valor Significado
OWNER_SECURITY_INFORMATION Incluir al propietario.
GROUP_SECURITY_INFORMATION Incluir al grupo principal.
DACL_SECURITY_INFORMATION Incluir la DACL.
SACL_SECURITY_INFORMATION Incluir la SACL.

Si la DACL es null y el bit de control SE_DACL_PRESENT se establece en el descriptor de seguridad de entrada, se produce un error en el método.

Si la DACL es null y el bit de control SE_DACL_PRESENT no se establece en el descriptor de seguridad de entrada, la cadena de descriptor de seguridad resultante no tiene un componente D:. Consulte Formato de cadena de descriptor de seguridad para obtener más detalles.

Este método llama a ConvertStringSecurityDescriptorToSecurityDescriptor.

Consulte también

Ejemplo de seguridad
SECURITY_DESCRIPTOR
Información general sobre la clase
Funciones globales de seguridad