Condividi tramite


Interfaccia IADsSecurityDescriptor (iads.h)

L'interfaccia IADsSecurityDescriptor fornisce l'accesso alle proprietà in un oggetto descrittore di sicurezza ADSI.

Ereditarietà

L'interfaccia IADsSecurityDescriptor eredita dall'interfaccia IDispatch . IADsSecurityDescriptor include anche questi tipi di membri:

Metodi

L'interfaccia IADsSecurityDescriptor include questi metodi.

 
IADsSecurityDescriptor::CopySecurityDescriptor

Il metodo IADsSecurityDescriptor::CopySecurityDescriptor copia un oggetto descrittore di sicurezza ADSI che contiene dati di sicurezza relativi a un oggetto.

Commenti

Usare questa interfaccia per esaminare e modificare i controlli di accesso in un oggetto del servizio directory di Active Directory. È anche possibile usarlo per creare copie di un descrittore di sicurezza. Per ottenere questa interfaccia, usare il metodo IADs.Get per ottenere l'attributo ntSecurityDescriptor dell'oggetto. Per altre informazioni su come creare un nuovo descrittore di sicurezza e impostarlo su un oggetto, vedere Creazione di un descrittore di sicurezza per un nuovo oggetto Directory e DACLs Null e DLL vuote.

Spesso non è possibile modificare tutte le parti del descrittore di sicurezza. Ad esempio, se l'utente corrente ha il controllo completo di un oggetto, ma non è un amministratore e non possiede l'oggetto, l'utente può modificare l'elenco dati, ma non può modificare il proprietario. Verrà generato un errore quando viene aggiornato ntSecurityDescriptor . Per evitare questo problema, è possibile usare l'interfaccia IADsObjectOptions per specificare le parti specifiche del descrittore di sicurezza da modificare.

Esempio

Nell'esempio di codice seguente viene illustrato come usare l'interfaccia IADsObjectOptions per modificare solo parti specifiche del descrittore di sicurezza.

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

Nell'esempio di codice seguente viene illustrato come visualizzare i dati da un descrittore di sicurezza.

' 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

Nell'esempio di codice seguente viene illustrato come visualizzare i dati da un descrittore di sicurezza di un oggetto directory.

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;
}

Requisiti

Requisito Valore
Client minimo supportato Windows Vista
Server minimo supportato Windows Server 2008
Piattaforma di destinazione Windows
Intestazione iads.h

Vedi anche

Creazione di un descrittore di sicurezza per un nuovo oggetto Directory

IADsAccessControlEntry

IADsAccessControlList

Idispatch

DACLs null e DACLs vuoti