Compartilhar via


Interface IADsSecurityDescriptor (iads.h)

A interface IADsSecurityDescriptor fornece acesso a propriedades em um objeto descritor de segurança ADSI.

Herança

A interface IADsSecurityDescriptor herda da interface IDispatch . IADsSecurityDescriptor também tem estes tipos de membros:

Métodos

A interface IADsSecurityDescriptor tem esses métodos.

 
IADsSecurityDescriptor::CopySecurityDescriptor

O método IADsSecurityDescriptor::CopySecurityDescriptor copia um objeto descritor de segurança ADSI que contém dados de segurança sobre um objeto .

Comentários

Use essa interface para examinar e alterar os controles de acesso para um objeto de serviço de diretório do Active Directory. Você também pode usá-lo para criar cópias de um descritor de segurança. Para obter essa interface, use o método IADs.Get para obter o atributo ntSecurityDescriptor do objeto. Para obter mais informações sobre como criar um novo descritor de segurança e defini-lo em um objeto , consulte Criando um descritor de segurança para um novo objeto de diretório e DACLs nulos e DACLs vazias.

Geralmente, não é possível modificar todas as partes do descritor de segurança. Por exemplo, se o usuário atual tiver controle total de um objeto, mas não for um administrador e não for o proprietário do objeto, o usuário poderá modificar a DACL, mas não poderá modificar o proprietário. Isso causará um erro quando o ntSecurityDescriptor for atualizado. Para evitar esse problema, a interface IADsObjectOptions pode ser usada para especificar as partes específicas do descritor de segurança que devem ser modificadas.

Exemplos

O exemplo de código a seguir mostra como usar a interface IADsObjectOptions para modificar apenas partes específicas do descritor de segurança.

Const ADS_OPTION_SECURITY_MASK = 3
Const ADS_SECURITY_INFO_OWNER = 1
Const ADS_SECURITY_INFO_GROUP = 2
Const ADS_SECURITY_INFO_DACL = 4

Dim obj as IADs
Dim sd as IADsSecurityDescriptor
Dim oOptions as IADsObjectOptions

' Bind to the object.
Set obj = GetObject("LDAP://.....")

' Get the IADsSecurityDescriptor.
Set sd = obj.Get("ntSecurityDescriptor")

' Modify the DACL as required.

' Get the IADsObjectOptions for the object - not the IADsSecurityDescriptor.
Set oOptions = obj

' Set options so that only the DACL will be updated.
oOptions.SetOption ADS_OPTION_SECURITY_MASK, ADS_INFO_DACL

' Update the security descriptor.
obj.Put "ntSecurityDescriptor", sd
obj.SetInfo

O exemplo de código a seguir mostra como exibir dados de um descritor de segurança.

' Get the security descriptor.
Dim x As IADs
Dim sd As IADsSecurityDescriptor

On Error GoTo Cleanup
 
Set x = GetObject("LDAP://DC=Fabrikam,DC=com")
Set sd = x.Get("ntSecurityDescriptor")
Debug.Print sd.Control
Debug.Print sd.Group
Debug.Print sd.Owner
Debug.Print sd.Revision
 
Cleanup:
    If (Err.Number<>0) Then
        MsgBox("An error has occurred. " & Err.Number)
    End If
    Set x = Nothing
    Set sd = Nothing

O exemplo de código a seguir mostra como exibir dados de um descritor de segurança de um objeto de diretório.

HRESULT DisplaySD(IADs *pObj)
{
    IADsSecurityDescriptor *pSD = NULL;
    BSTR bstr = NULL;
    long lVal = 0;    
    HRESULT hr = S_OK;
    VARIANT var;
    
    VariantInit(&var);

    if(pObj==NULL)
    {
        return E_FAIL;
    }
    
    hr = pObj->Get(CComBSTR("ntSecurityDescriptor"), &var);
    if(FAILED(hr)){goto Cleanup;}
    
    
    hr = V_DISPATCH(&var)->QueryInterface(IID_IADsSecurityDescriptor,(void**)&pSD);
    if(FAILED(hr)){goto Cleanup;}
    
   hr = pSD->get_Control(&lVal);
   printf("SD Control = %d\n",lVal);

   hr = pSD->get_Owner(&bstr);
   printf("SD Owner   = %S\n",bstr);
   SysFreeString(bstr);

   hr = pSD->get_Group(&bstr);
   printf("SD Group   = %S\n",bstr);
   SysFreeString(bstr);

   hr = pSD->get_Revision(&lVal);
   printf("SD Revision= %d\n",lVal);
        
Cleanup:
    VariantClear(&var);
    if(pSD) pSD->Release();
    return hr;
}

Requisitos

Requisito Valor
Cliente mínimo com suporte Windows Vista
Servidor mínimo com suporte Windows Server 2008
Plataforma de Destino Windows
Cabeçalho iads.h

Confira também

Criando um descritor de segurança para um novo objeto de diretório

IADsAccessControlEntry

IADsAccessControlList

IDispatch

DACLs nulos e DACLs vazias