Compartilhar via


Classe CSecurityDesc

Essa classe é um wrapper para a estrutura SECURITY_DESCRIPTOR.

Importante

Essa classe e os respectivos membros não podem ser usados em aplicativos executados no Windows Runtime.

Sintaxe

class CSecurityDesc

Membros

Construtores públicos

Nome Descrição
CSecurityDesc::CSecurityDesc O construtor .
CSecurityDesc::~CSecurityDesc O destruidor.

Métodos públicos

Nome Descrição
CSecurityDesc::FromString Converte um descritor de segurança de formato de cadeia de caracteres em um descritor de segurança funcional válido.
CSecurityDesc::GetControl Recupera informações de controle do descritor de segurança.
CSecurityDesc::GetDacl Recupera informações da DACL (lista de controle de acesso discricionário) do descritor de segurança.
CSecurityDesc::GetGroup Recupera as informações do grupo primário do descritor de segurança.
CSecurityDesc::GetOwner Recupera as informações do proprietário do descritor de segurança.
CSecurityDesc::GetPSECURITY_DESCRIPTOR Retorna um ponteiro para a estrutura SECURITY_DESCRIPTOR.
CSecurityDesc::GetSacl Recupera informações da SACL (lista de controle de acesso do sistema) do descritor de segurança.
CSecurityDesc::IsDaclAutoInherited Determina se a DACL está configurada para dar suporte à propagação automática.
CSecurityDesc::IsDaclDefaulted Determina se o descritor de segurança está configurado com uma DACL padrão.
CSecurityDesc::IsDaclPresent Determina se o descritor de segurança contém uma DACL.
CSecurityDesc::IsDaclProtected Determina se a DACL está configurada para evitar modificações.
CSecurityDesc::IsGroupDefaulted Determina se o SID (identificador de segurança de grupo) do grupo do descritor de segurança foi definido por padrão.
CSecurityDesc::IsOwnerDefaulted Determina se o SID do proprietário do descritor de segurança foi definido por padrão.
CSecurityDesc::IsSaclAutoInherited Determina se a SACL está configurada para dar suporte à propagação automática.
CSecurityDesc::IsSaclDefaulted Determina se o descritor de segurança está configurado com uma SACL padrão.
CSecurityDesc::IsSaclPresent Determina se o descritor de segurança contém uma SACL.
CSecurityDesc::IsSaclProtected Determina se a SACL está configurada para evitar modificações.
CSecurityDesc::IsSelfRelative Determina se o descritor de segurança está em formato autorrelativo.
CSecurityDesc::MakeAbsolute Chame esse método para converter o descritor de segurança ao formato absoluto.
CSecurityDesc::MakeSelfRelative Chame esse método para converter o descritor de segurança ao formato autorrelativo.
CSecurityDesc::SetControl Define os bits de controle de um descritor de segurança.
CSecurityDesc::SetDacl Define informações em uma DACL. Se já houver uma DACL presente no descritor de segurança, ela será substituída.
CSecurityDesc::SetGroup Define as informações do grupo primário de um descritor de segurança de formato absoluto, substituindo todas as informações do grupo primário já presentes.
CSecurityDesc::SetOwner Define as informações do proprietário de um descritor de segurança de formato absoluto, substituindo todas as informações do proprietário já presentes.
CSecurityDesc::SetSacl Define informações em uma SACL. Se já houver uma SACL presente no descritor de segurança, ela será substituída.
CSecurityDesc::ToString Converte um descritor de segurança em um formato de cadeia de caracteres.

Operadores públicos

Nome Descrição
CSecurityDesc::operator const SECURITY_DESCRIPTOR * Retorna um ponteiro para a estrutura SECURITY_DESCRIPTOR.
CSecurityDesc::operator = Operador de atribuição.

Comentários

A estrutura SECURITY_DESCRIPTOR contém as informações de segurança associadas a um objeto. Os aplicativos usam essa estrutura para definir e consultar o status de segurança de um objeto. Confira também AtlGetSecurityDescriptor.

Os aplicativos não devem modificar a estrutura SECURITY_DESCRIPTOR diretamente; em vez disso, devem usar os métodos de classe fornecidos.

Para ver uma introdução ao modelo de controle de acesso no Windows, confira Controle de Acesso no SDK do Windows.

Requisitos

Cabeçalho: atlsecurity.h

CSecurityDesc::CSecurityDesc

O construtor .

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

Parâmetros

rhs
O objeto CSecurityDesc ou a estrutura SECURITY_DESCRIPTOR a serem atribuídos ao novo objeto CSecurityDesc.

Comentários

O objeto CSecurityDesc pode ser criado usando uma estrutura SECURITY_DESCRIPTOR ou um objeto CSecurityDesc definido anteriormente.

CSecurityDesc::~CSecurityDesc

O destruidor.

virtual ~CSecurityDesc() throw();

Comentários

O destruidor libera todos os recursos alocados.

CSecurityDesc::FromString

Converte um descritor de segurança de formato de cadeia de caracteres em um descritor de segurança funcional válido.

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

Parâmetros

pstr
Ponteiro para uma cadeia de caracteres terminada em nulo que contém o descritor de segurança de formato de cadeia de caracteres a ser convertido.

Valor de retorno

Retorna true em caso de êxito. Gera uma exceção na falha.

Comentários

A cadeia de caracteres pode ser criada usando-se CSecurityDesc::ToString. A conversão do descritor de segurança em uma cadeia de caracteres facilita o armazenamento e a transmissão.

Esse método chama ConvertStringSecurityDescriptorToSecurityDescriptor.

CSecurityDesc::GetControl

Recupera informações de controle do descritor de segurança.

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

Parâmetros

psdc
Ponteiro para uma estrutura SECURITY_DESCRIPTOR_CONTROL que recebe as informações de controle do descritor de segurança.

Valor de retorno

Retornará true se o método tiver êxito e false se falhar.

Comentários

Esse método chama GetSecurityDescriptorControl.

CSecurityDesc::GetDacl

Recupera informações da DACL (lista de controle de acesso discricionário) do descritor de segurança.

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

Parâmetros

pDacl
Ponteiro para uma estrutura CDacl na qual deve ser armazenada uma cópia da DACL do descritor de segurança. Se existir uma ACL (lista de controle de acesso) discricionária, o método definirá pDacl como o endereço da ACL discricionária do descritor de segurança. Se não existir uma ACL discricionária, nenhum valor será armazenado.

pbPresent
Ponteiro para um valor que indica a presença de uma ACL discricionária no descritor de segurança especificado. Se o descritor de segurança contiver uma ACL discricionária, esse parâmetro será definido como true. Se o descritor de segurança não contiver uma ACL discricionária, esse parâmetro será definido como false.

pbDefaulted
Ponteiro para um sinalizador definido como o valor do sinalizador SE_DACL_DEFAULTED na estrutura SECURITY_DESCRIPTOR_CONTROL se houver uma ACL discricionária para o descritor de segurança. Se esse sinalizador for verdadeiro, significa que a ACL discricionária foi recuperada por um mecanismo padrão; se for false, a ACL discricionária foi explicitamente especificada por um usuário.

Valor de retorno

Retornará true se o método tiver êxito e false se falhar.

CSecurityDesc::GetGroup

Recupera as informações do grupo primário do descritor de segurança.

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

Parâmetros

pSid
Ponteiro para um CSid (identificador de segurança) que recebe uma cópia do grupo armazenado no CDacl.

pbDefaulted
Ponteiro para um sinalizador definido como o valor do sinalizador SE_GROUP_DEFAULTED na estrutura SECURITY_DESCRIPTOR_CONTROL quando o método é retornado.

Valor de retorno

Retornará true se o método tiver êxito e false se falhar.

CSecurityDesc::GetOwner

Recupera as informações do proprietário do descritor de segurança.

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

Parâmetros

pSid
Ponteiro para um CSid (identificador de segurança) que recebe uma cópia do grupo armazenado no CDacl.

pbDefaulted
Ponteiro para um sinalizador definido como o valor do sinalizador SE_OWNER_DEFAULTED na estrutura SECURITY_DESCRIPTOR_CONTROL quando o método é retornado.

Valor de retorno

Retornará true se o método tiver êxito e false se falhar.

CSecurityDesc::GetPSECURITY_DESCRIPTOR

Retorna um ponteiro para a estrutura SECURITY_DESCRIPTOR.

const SECURITY_DESCRIPTOR* GetPSECURITY_DESCRIPTOR() const throw();

Valor de retorno

Retorna um ponteiro para a estrutura SECURITY_DESCRIPTOR.

CSecurityDesc::GetSacl

Recupera informações da SACL (lista de controle de acesso do sistema) do descritor de segurança.

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

Parâmetros

pSacl
Ponteiro para uma estrutura CSacl na qual deve ser armazenada uma cópia da SACL do descritor de segurança. Se existir uma ACL do sistema, o método definirá pSacl como o endereço da ACL do sistema do descritor de segurança. Se não existir uma ACL do sistema, nenhum valor será armazenado.

pbPresent
Ponteiro para um sinalizador que o método define para indicar a presença de uma ACL do sistema no descritor de segurança especificado. Se o descritor de segurança contiver uma ACL de sistema, esse parâmetro será definido como true. Se o descritor de segurança não contiver uma ACL de sistema, esse parâmetro será definido como false.

pbDefaulted
Ponteiro para um sinalizador definido como o valor do sinalizador SE_SACL_DEFAULTED na estrutura SECURITY_DESCRIPTOR_CONTROL se houver uma ACL de sistema para o descritor de segurança.

Valor de retorno

Retornará true se o método tiver êxito e false se falhar.

CSecurityDesc::IsDaclAutoInherited

Determina se a DACL (lista de controle de acesso discricionário) está configurada para dar suporte à propagação automática.

bool IsDaclAutoInherited() const throw();

Valor de retorno

Retornará true se o descritor de segurança contiver uma DACL configurada para dar suporte à propagação automática de ACEs (entradas de controle de acesso) herdáveis para objetos filho existentes. Caso contrário, retorna falso.

Comentários

O sistema define esse bit ao executar o algoritmo de herança automático para o objeto e seus objetos filho existentes.

CSecurityDesc::IsDaclDefaulted

Determina se o descritor de segurança está configurado com uma DACL (lista padrão de controle de acesso discricionário).

bool IsDaclDefaulted() const throw();

Valor de retorno

Retornará true se o descritor de segurança contiver uma DACL padrão, caso contrário, retornará false.

Comentários

Esse sinalizador pode afetar a forma como o sistema trata a DACL em relação à ACE (entrada de controle de acesso) de herança. Por exemplo, se o criador de um objeto não especificar uma DACL, o objeto receberá a DACL padrão do token de acesso do criador. O sistema ignorará esse sinalizador se o sinalizador SE_DACL_PRESENT não estiver definido.

Esse sinalizador é usado para determinar como a DACL final no objeto deve ser computada e não fica armazenada fisicamente no controle do descritor de segurança do objeto protegível.

Para definir esse sinalizador, use o método CSecurityDesc::SetDacl.

CSecurityDesc::IsDaclPresent

Determina se o descritor de segurança contém uma DACL (lista de controle de acesso discricionário).

bool IsDaclPresent() const throw();

Valor de retorno

Retornará true se o descritor de segurança contiver uma DACL, caso contrário, retornará false.

Comentários

Se esse sinalizador não estiver definido ou se estiver definido e a DACL for NULL, o descritor de segurança permitirá o acesso total a todos.

Esse sinalizador é usado para manter as informações de segurança especificadas por um chamador até que o descritor de segurança esteja associado a um objeto protegível. Assim que o descritor de segurança estiver associado a um objeto protegível, o sinalizador SE_DACL_PRESENT ficará sempre definido no controle do descritor de segurança.

Para definir esse sinalizador, use o método CSecurityDesc::SetDacl.

CSecurityDesc::IsDaclProtected

Determina se a DACL (lista de controle de acesso discricionário) está configurada para evitar modificações.

bool IsDaclProtected() const throw();

Valor de retorno

Retornará true se a DACL estiver configurada para impedir que o descritor de segurança seja modificado por ACEs (entradas de controle de acesso) herdáveis. Caso contrário, retorna falso.

Comentários

Para definir esse sinalizador, use o método CSecurityDesc::SetDacl.

Esse método dá suporte à propagação automática de ACEs herdáveis.

CSecurityDesc::IsGroupDefaulted

Determina se o SID (identificador de segurança de grupo) do grupo do descritor de segurança foi definido por padrão.

bool IsGroupDefaulted() const throw();

Valor de retorno

Retornará true se, em vez do provedor original do descritor de segurança, um mecanismo padrão tiver fornecido o SID do grupo do descritor de segurança. Caso contrário, retorna falso.

Comentários

Para definir esse sinalizador, use o método CSecurityDesc::SetGroup.

CSecurityDesc::IsOwnerDefaulted

Determina se o SID (identificador de segurança de grupo) do proprietário do descritor de segurança foi definido por padrão.

bool IsOwnerDefaulted() const throw();

Valor de retorno

Retornará true se, em vez do provedor original do descritor de segurança, um mecanismo padrão tiver fornecido o SID do proprietário do descritor de segurança. Caso contrário, retorna falso.

Comentários

Para definir esse sinalizador, use o método CSecurityDesc::SetOwner.

CSecurityDesc::IsSaclAutoInherited

Determina se a SACL (lista de controle de acesso do sistema) está configurada para dar suporte à propagação automática.

bool IsSaclAutoInherited() const throw();

Valor de retorno

Retornará true se o descritor de segurança contiver uma SACL configurada para dar suporte à propagação automática de ACEs (entradas de controle de acesso) herdáveis para objetos filho existentes. Caso contrário, retorna falso.

Comentários

O sistema define esse bit ao executar o algoritmo de herança automático para o objeto e seus objetos filho existentes.

CSecurityDesc::IsSaclDefaulted

Determina se o descritor de segurança está configurado com uma SACL (lista de controle de acesso do sistema) padrão.

bool IsSaclDefaulted() const throw();

Valor de retorno

Retornará true se o descritor de segurança contiver uma SACL padrão, caso contrário, retornará false.

Comentários

Esse sinalizador pode afetar a forma como o sistema trata a SACL em relação à ACE (entrada de controle de acesso) de herança. O sistema ignorará esse sinalizador se o sinalizador SE_SACL_PRESENT não estiver definido.

Para definir esse sinalizador, use o método CSecurityDesc::SetSacl.

CSecurityDesc::IsSaclPresent

Determina se o descritor de segurança contém uma SACL (lista de controle de acesso do sistema).

bool IsSaclPresent() const throw();

Valor de retorno

Retornará true se o descritor de segurança contiver uma SACL, caso contrário, retornará false.

Comentários

Para definir esse sinalizador, use o método CSecurityDesc::SetSacl.

CSecurityDesc::IsSaclProtected

Determina se a SACL (lista de controle de acesso do sistema) está configurada para evitar modificações.

bool IsSaclProtected() const throw();

Valor de retorno

Retornará true se a SACL estiver configurada para impedir que o descritor de segurança seja modificado por ACEs (entradas de controle de acesso) herdáveis. Caso contrário, retorna falso.

Comentários

Para definir esse sinalizador, use o método CSecurityDesc::SetSacl.

Esse método dá suporte à propagação automática de ACEs herdáveis.

CSecurityDesc::IsSelfRelative

Determina se o descritor de segurança está em formato autorrelativo.

bool IsSelfRelative() const throw();

Valor de retorno

Retornará true se o descritor de segurança estiver em formato autorrelativo com todas as informações de segurança em um bloco de memória contíguo. Retornará false se o descritor de segurança estiver em formato absoluto. Para obter mais informações, confira Descritores de segurança absolutos e autorrelativos.

CSecurityDesc::MakeAbsolute

Chame esse método para converter o descritor de segurança ao formato absoluto.

bool MakeAbsolute() throw(...);

Valor de retorno

Retornará true se o método tiver êxito, caso contrário, retornará false.

Comentários

Um descritor de segurança em formato absoluto contém ponteiros para as informações presentes nele em vez das informações em si. Um descritor de segurança em formato autorrelativo contém as informações em um bloco de memória contíguo. Em um descritor de segurança autorrelativo, uma estrutura SECURITY_DESCRIPTOR sempre inicia as informações, mas outros componentes do descritor de segurança podem seguir a estrutura em qualquer ordem. Em vez de usar endereços de memória, os componentes do descritor de segurança autorrelativo são identificados por deslocamentos desde o início do descritor de segurança. Esse formato é útil quando um for preciso armazenar um descritor de segurança em um disco ou transmiti-lo por meio de um protocolo de comunicação. Para obter mais informações, confira Descritores de segurança absolutos e autorrelativos.

CSecurityDesc::MakeSelfRelative

Chame esse método para converter o descritor de segurança ao formato autorrelativo.

bool MakeSelfRelative() throw(...);

Valor de retorno

Retornará true se o método tiver êxito, caso contrário, retornará false.

Comentários

Um descritor de segurança em formato absoluto contém ponteiros para as informações presentes nele em vez das informações em si. Um descritor de segurança em formato autorrelativo contém as informações em um bloco de memória contíguo. Em um descritor de segurança autorrelativo, uma estrutura SECURITY_DESCRIPTOR sempre inicia as informações, mas outros componentes do descritor de segurança podem seguir a estrutura em qualquer ordem. Em vez de usar endereços de memória, os componentes do descritor de segurança são identificados por deslocamentos desde o início do descritor de segurança. Esse formato é útil quando um for preciso armazenar um descritor de segurança em um disco ou transmiti-lo por meio de um protocolo de comunicação. Para obter mais informações, confira Descritores de segurança absolutos e autorrelativos.

CSecurityDesc::operator =

Operador de atribuição.

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

Parâmetros

rhs
A estrutura SECURITY_DESCRIPTOR ou o objeto CSecurityDesc a serem atribuídos ao objeto CSecurityDesc.

Valor de retorno

Retorna o objeto atualizado CSecurityDesc.

CSecurityDesc::operator const SECURITY_DESCRIPTOR *

Converte um valor em um ponteiro para a estrutura SECURITY_DESCRIPTOR.

operator const SECURITY_DESCRIPTOR *() const throw();

CSecurityDesc::SetControl

Define os bits de controle de um descritor de segurança.

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

Parâmetros

ControlBitsOfInterest
Uma máscara SECURITY_DESCRIPTOR_CONTROL que indica os bits de controle a serem definidos. Para obter uma lista dos sinalizadores que podem ser definidos, confira SetSecurityDescriptorControl.

ControlBitsToSet
Uma máscara SECURITY_DESCRIPTOR_CONTROL que indica os novos valores para os bits de controle especificados pela máscara ControlBitsOfInterest. Esse parâmetro pode ser uma combinação dos sinalizadores listados para o parâmetro ControlBitsOfInterest.

Valor de retorno

Retorna true em caso de êxito, false em caso de falha.

Comentários

Esse método chama SetSecurityDescriptorControl.

CSecurityDesc::SetDacl

Define informações em uma DACL (lista de controle de acesso discricionário). Se já houver uma DACL presente no descritor de segurança, ela será substituída.

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

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

Parâmetros

Dacl
Referência a um objeto CDacl que especifica a DACL para o descritor de segurança. Esse parâmetro não deve ser NULL. Para definir uma DACL NULL no descritor de segurança, a primeira forma do método deve ser usada com o bPresent definido como false.

bPresent
Especifica um sinalizador que indica a presença de uma DACL no descritor de segurança. Se esse parâmetro for true, o método definirá o sinalizador SE_DACL_PRESENT na estrutura SECURITY_DESCRIPTOR_CONTROL e usará os valores nos parâmetros Dacl e bDefaulted. Se for false, o método limpará o sinalizador SE_DACL_PRESENT e o bDefaulted será ignorado.

bDefaulted
Especifica um sinalizador que indica a origem da DACL. Se esse sinalizador for true, a DACL foi recuperada por algum mecanismo padrão. Se for false, a DACL foi explicitamente especificada por um usuário. O método armazena esse valor no sinalizador SE_DACL_DEFAULTED da estrutura SECURITY_DESCRIPTOR_CONTROL. Se esse parâmetro não estiver especificado, o sinalizador SE_DACL_DEFAULTED estará limpo.

Valor de retorno

Retorna true em caso de êxito, false em caso de falha.

Comentários

Há uma grande diferença entre uma DACL vazia e uma DACL inexistente. Quando uma DACL está vazia, ela não contém entradas de controle de acesso, e nenhum direito de acesso foi concedido explicitamente. Como resultado, o acesso ao objeto é negado implicitamente. Por outro lado, quando um objeto não tem uma DACL, nenhuma proteção é atribuída ao objeto, e qualquer solicitação de acesso será concedida.

CSecurityDesc::SetGroup

Define as informações do grupo primário de um descritor de segurança de formato absoluto, substituindo todas as informações do grupo primário já presentes.

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

Parâmetros

Sid
Referência a um objeto CSid para o novo grupo primário do descritor de segurança. Esse parâmetro não deve ser NULL. Um descritor de segurança pode ser marcado como não contendo uma DACL ou uma SACL, mas ele deve ter um grupo e um proprietário, mesmo que sejam o SID NULL (que é um SID interno com um significado especial).

bDefaulted
Indica se as informações do grupo primário são derivadas de um mecanismo padrão. Se esse valor for true, serão informações padrão, e o método armazenará esse valor como o sinalizador SE_GROUP_DEFAULTED na estrutura SECURITY_DESCRIPTOR_CONTROL. Se esse parâmetro for zero, o sinalizador SE_GROUP_DEFAULTED estará limpo.

Valor de retorno

Retorna true em caso de êxito, false em caso de falha.

CSecurityDesc::SetOwner

Define as informações de proprietário de um descritor de segurança de formato absoluto. Ele substitui todas as informações de proprietário já presentes.

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

Parâmetros

Sid
O objeto CSid do novo proprietário primário do descritor de segurança. Esse parâmetro não deve ser NULL.

bDefaulted
Indica se as informações de proprietário são derivadas de um mecanismo padrão. Se esse valor for true, serão informações padrão. O método armazena esse valor como o sinalizador SE_OWNER_DEFAULTED na estrutura SECURITY_DESCRIPTOR_CONTROL. Se esse parâmetro for zero, o sinalizador SE_OWNER_DEFAULTED estará limpo.

Valor de retorno

Retorna true em caso de êxito, false em caso de falha.

CSecurityDesc::SetSacl

Define informações em uma SACL (lista de controle de acesso do sistema). Se já houver uma SACL presente no descritor de segurança, ela será substituída.

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

Parâmetros

Sacl
Ponteiro para um objeto CSacl especificando a SACL do descritor de segurança. Esse parâmetro não deve ser NULL e deve ser um objeto CSacl. Ao contrário das DACLs, não há diferença entre NULL e uma SACL vazia, pois os objetos da SACL não especificam direitos de acesso, apenas informações de auditoria.

bDefaulted
Especifica um sinalizador que indica a origem da SACL. Se esse sinalizador for true, a SACL foi recuperada por algum mecanismo padrão. Se for false, a SACL foi explicitamente especificada por um usuário. O método armazena esse valor no sinalizador SE_SACL_DEFAULTED da estrutura SECURITY_DESCRIPTOR_CONTROL. Se esse parâmetro não estiver especificado, o sinalizador SE_SACL_DEFAULTED estará limpo.

Valor de retorno

Retorna true em caso de êxito, false em caso de falha.

CSecurityDesc::ToString

Converte um descritor de segurança em um formato de cadeia de caracteres.

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

Parâmetros

pstr
Ponteiro para uma cadeia de caracteres terminada em nulo que receberá o descritor de segurança de formato de cadeia de caracteres.

sim
Especifica uma combinação de sinalizadores bit SECURITY_INFORMATION para indicar os componentes do descritor de segurança a serem incluídos na cadeia de caracteres de saída.

Valor de retorno

Retorna true em caso de êxito, false em caso de falha.

Comentários

Assim que o descritor de segurança estiver no formato de cadeia de caracteres, ele poderá ser armazenado ou transmitido com mais facilidade. Use o método CSecurityDesc::FromString para converter a cadeia de caracteres de volta em um descritor de segurança.

O parâmetro si pode conter os seguintes sinalizadores SECURITY_INFORMATION:

Valor Significado
OWNER_SECURITY_INFORMATION Incluir o proprietário.
GROUP_SECURITY_INFORMATION Incluir o grupo primário.
DACL_SECURITY_INFORMATION Incluir a DACL.
SACL_SECURITY_INFORMATION Incluir a SACL.

Se a DACL for NULL e o bit de controle SE_DACL_PRESENT estiver definido no descritor de segurança de entrada, o método falhará.

Se a DACL for NULL e o bit de controle SE_DACL_PRESENT não estiver definido no descritor de segurança de entrada, a cadeia de caracteres do descritor de segurança resultante não terá um componente D:. Confira Formato de cadeia de caracteres do descritor de segurança para obter mais detalhes.

Esse método chama ConvertStringSecurityDescriptorToSecurityDescriptor.

Confira também

Exemplo de Segurança
SECURITY_DESCRIPTOR
Visão geral da aula
Funções globais de segurança