IADsSecurityDescriptor-Schnittstelle (iads.h)

Die IADsSecurityDescriptor-Schnittstelle ermöglicht den Zugriff auf Eigenschaften eines ADSI-Sicherheitsdeskriptorobjekts.

Vererbung

Die IADsSecurityDescriptor-Schnittstelle erbt von der IDispatch-Schnittstelle . IADsSecurityDescriptor verfügt auch über folgende Arten von Membern:

Methoden

Die IADsSecurityDescriptor-Schnittstelle verfügt über diese Methoden.

 
IADsSecurityDescriptor::CopySecurityDescriptor

Die IADsSecurityDescriptor::CopySecurityDescriptor-Methode kopiert ein ADSI-Sicherheitsdeskriptorobjekt, das Sicherheitsdaten zu einem Objekt enthält.

Hinweise

Verwenden Sie diese Schnittstelle, um die Zugriffssteuerungen in ein Active Directory-Verzeichnisdienstobjekt zu überprüfen und zu ändern. Sie können es auch verwenden, um Kopien eines Sicherheitsdeskriptors zu erstellen. Um diese Schnittstelle abzurufen, verwenden Sie die IADs.Get-Methode , um das ntSecurityDescriptor-Attribut des -Objekts abzurufen. Weitere Informationen zum Erstellen einer neuen Sicherheitsbeschreibung und zum Festlegen für ein Objekt finden Sie unter Erstellen eines Sicherheitsdeskriptors für ein neues Verzeichnisobjekt und NULL-DACLs und leere DACLs.

Häufig ist es nicht möglich, alle Teile der Sicherheitsbeschreibung zu ändern. Wenn der aktuelle Benutzer beispielsweise die volle Kontrolle über ein Objekt hat, aber kein Administrator ist und nicht Besitzer des Objekts ist, kann der Benutzer die DACL ändern, aber den Besitzer nicht ändern. Dies führt zu einem Fehler, wenn der ntSecurityDescriptor aktualisiert wird. Um dieses Problem zu vermeiden, kann die IADsObjectOptions-Schnittstelle verwendet werden, um die spezifischen Teile der Sicherheitsbeschreibung anzugeben, die geändert werden sollen.

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie die IADsObjectOptions-Schnittstelle verwendet wird, um nur bestimmte Teile der Sicherheitsbeschreibung zu ändern.

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

Das folgende Codebeispiel zeigt, wie Daten aus einer Sicherheitsbeschreibung angezeigt werden.

' 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

Das folgende Codebeispiel zeigt, wie Daten aus einem Sicherheitsdeskriptor eines Verzeichnisobjekts angezeigt werden.

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

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client) Windows Vista
Unterstützte Mindestversion (Server) Windows Server 2008
Zielplattform Windows
Kopfzeile iads.h

Weitere Informationen

Erstellen eines Sicherheitsdeskriptors für ein neues Verzeichnisobjekt

IADsAccessControlEntry

IADsAccessControlList

IDispatch

Null-DACLs und leere DACLs