Compartir a través de


Interfaz IADsSecurityDescriptor (iads.h)

La interfaz IADsSecurityDescriptor proporciona acceso a las propiedades de un objeto descriptor de seguridad ADSI.

Herencia

La interfaz IADsSecurityDescriptor hereda de la interfaz IDispatch . IADsSecurityDescriptor también tiene estos tipos de miembros:

Métodos

La interfaz IADsSecurityDescriptor tiene estos métodos.

 
IADsSecurityDescriptor::CopySecurityDescriptor

El método IADsSecurityDescriptor::CopySecurityDescriptor copia un objeto descriptor de seguridad ADSI que contiene datos de seguridad sobre un objeto .

Comentarios

Use esta interfaz para examinar y cambiar los controles de acceso a un objeto de servicio de directorio de Active Directory. También puede usarlo para crear copias de un descriptor de seguridad. Para obtener esta interfaz, use el método IADs.Get para obtener el atributo ntSecurityDescriptor del objeto . Para obtener más información sobre cómo crear un nuevo descriptor de seguridad y establecerlo en un objeto, vea Creating a Security Descriptor for a New Directory Object and Null DACLs and Empty DACLs.

A menudo, no es posible modificar todas las partes del descriptor de seguridad. Por ejemplo, si el usuario actual tiene control total de un objeto, pero no es un administrador y no es propietario del objeto, el usuario puede modificar la DACL, pero no puede modificar el propietario. Esto provocará un error cuando se actualice ntSecurityDescriptor . Para evitar este problema, la interfaz IADsObjectOptions se puede usar para especificar las partes específicas del descriptor de seguridad que se deben modificar.

Ejemplos

En el ejemplo de código siguiente se muestra cómo usar la interfaz IADsObjectOptions para modificar solo partes específicas del descriptor de seguridad.

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

En el ejemplo de código siguiente se muestra cómo mostrar datos de un descriptor de seguridad.

' 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

En el ejemplo de código siguiente se muestra cómo mostrar datos de un descriptor de seguridad de un objeto de directorio.

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 Value
Cliente mínimo compatible Windows Vista
Servidor mínimo compatible Windows Server 2008
Plataforma de destino Windows
Encabezado iads.h

Consulte también

Crear un descriptor de seguridad para un nuevo objeto de directorio

IADsAccessControlEntry

IADsAccessControlList

IDispatch

DACL null y DACL vacías