IADsAccessControlEntry-Eigenschaftenmethoden

Die Eigenschaftenmethoden der IADsAccessControlEntry-Schnittstelle erhalten oder legen die in der folgenden Tabelle beschriebenen Eigenschaften fest. Weitere Informationen finden Sie unter Schnittstelleneigenschaftsmethoden.

Eigenschaften

Accessmask

Enthält einen Satz von Flags, der Zugriffsberechtigungen für das -Objekt angibt. Gültige Werte für Active Directory-Objekte werden in der ADS _ RIGHTS _ ENUM-Enumeration definiert.

Weitere Informationen und eine Liste möglicher Werte für Datei- oder Dateifreigabeobjekte finden Sie unter Dateisicherheit und Zugriffsrechte.

Weitere Informationen und eine Liste möglicher Werte für Registrierungsobjekte finden Sie unter Sicherheit und Zugriffsrechte für Registrierungsschlüssel.

Zugriffstyp: Lesen/Schreiben

Skriptdatentyp: LONG

// C++ method syntax
HRESULT get_AccessMask(
  [out] LONG* plnAccessMask
);
HRESULT put_AccessMask(
  [in] LONG lnAccessMask
);

AceFlags

Enthält einen Satz von Flags, der angibt, ob andere Container oder Objekte den ACE erben können. Gültige Werte für das Active Directory-Objekt werden in der ADS _ ACEFLAG _ ENUM-Enumeration definiert.

Weitere Informationen und mögliche Werte für Datei-, Dateifreigabe- und Registrierungsobjekte finden Sie unter dem AceFlags-Member der ACE _ HEADER-Struktur.

Zugriffstyp: Lesen/Schreiben

Skriptdatentyp: LONG

// C++ method syntax
HRESULT get_AceFlags(
  [out] LONG* plnAceFlags
);
HRESULT put_AceFlags(
  [in] LONG lnAceFlags
);

AceType

Enthält einen Wert, der den Typ des ACE angibt. Gültige Werte für Active Directory-Objekte werden in der ADS _ ACETYPE _ ENUM-Enumeration definiert.

Weitere Informationen und mögliche Werte für Datei-, Dateifreigabe- und Registrierungsobjekte finden Sie unter dem AceType-Member der ACE _ HEADER-Struktur.

Zugriffstyp: Lesen/Schreiben

Skriptdatentyp: LONG

// C++ method syntax
HRESULT get_AceType(
  [out] LONG* plAceType
);
HRESULT put_AceType(
  [in] LONG lnAceType
);

Flags

Ein Flag, das angibt, ob der ACE über einen Objekttyp oder einen geerbten Objekttyp verfügt. Gültige Flags werden in der ADS _ FLAGTYPE _ ENUM-Enumeration definiert.

Zugriffstyp: Lesen/Schreiben

Skriptdatentyp: LONG

// C++ method syntax
HRESULT get_Flags(
  [out] LONG* lnflags
);
HRESULT put_Flags(
  [in] LONG lnflags
);

Inheritedobjecttype

Ein Flag, das den Typ eines untergeordneten Objekts eines ADSI-Objekts angibt. Der Wert ist eine GUID für ein Objekt im Zeichenfolgenformat. Wenn eine solche GUID festgelegt ist, gilt der ACE nur für das Objekt, auf das die GUID verwiesen wird.

Zugriffstyp: Lesen/Schreiben

Skriptdatentyp: BSTR

// C++ method syntax
HRESULT get_InheritedObjectType(
  [out] BSTR* bstrInheritedObjectType
);
HRESULT put_InheritedObjectType(
  [in] BSTR bstrInheritedObjectType
);

ObjectType

Ein Flag, das den ADSI-Objekttyp angibt. Der Wert ist eine GUID für eine Eigenschaft oder ein Objekt im Zeichenfolgenformat. Die GUID bezieht sich auf eine Eigenschaft, wenn ADS RIGHT _ _ DS READ _ _ PROP- und ADS RIGHT _ _ DS WRITE _ PROP-Zugriffsmasken _ verwendet werden. Die GUID gibt ein Objekt an, wenn ADS RIGHT _ _ DS CREATE _ _ CHILD- und ADS RIGHT _ _ DS DELETE _ CHILD-Zugriffsmasken _ verwendet werden.

Zugriffstyp: Lesen/Schreiben

Skriptdatentyp: BSTR

// C++ method syntax
HRESULT get_ObjectType(
  [out] BSTR* bstrObjectType
);
HRESULT put_ObjectType(
  [in] BSTR bstrObjectType
);

Treuhänder

Enthält den Namen des Kontos, für das der ACE gilt.

Zugriffstyp: Lesen/Schreiben

Skriptdatentyp: BSTR

// C++ method syntax
HRESULT get_Trustee(
  [out] BSTR* pbstrSecurityId
);
HRESULT put_Trustee(
  [in] BSTR bstrSecurityId
);

Beispiele

Im folgenden Codebeispiel wird veranschaulicht, wie Einträge zu einer abhängige ACL mithilfe der IADsAccessControlEntry-Eigenschaftenmethoden hinzugefügt werden.

Dim x As IADs
Dim sd As IADsSecurityDescriptor
Dim ace As IADsAccessControlEntry
Dim Dacl As IADsAccessControlList
Dim Ace1 As New AccessControlEntry
Dim Ace2 As New AccessControlEntry

On Error GoTo Cleanup
 
Set x = GetObject("LDAP://OU=Sales, DC=Fabrikam,DC=com")
Set sd = x.Get("ntSecurityDescriptor")
Set Dacl = sd.DiscretionaryAcl
 
' Show the existing ACEs.
For Each ace In Dacl
  Debug.Print ace.Trustee
Next
 
 
' Setup the first ACE.
Ace1.AccessMask = -1 'Full Permission (Allowed)
Ace1.AceType = ADS_ACETYPE_ACCESS_ALLOWED
Ace1.AceFlags = ADS_ACEFLAG_INHERIT_ACE
Ace1.Trustee = "ACTIVED\Administrator"
 
' Setup the 2nd ACE.
Ace2.AccessMask = -1 'Full Permission (Denied)
Ace2.AceType = ADS_ACETYPE_ACCESS_DENIED
Ace2.AceFlags = ADS_ACEFLAG_INHERIT_ACE
Ace2.Trustee = "ACTIVED\Andyhar"
 
' Add the ACEs to the Discretionary ACL.
Dacl.AddAce Ace1
Dacl.AddAce Ace2
 
sd.DiscretionaryAcl = Dacl
x.Put "ntSecurityDescriptor", Array(sd)
x.SetInfo

Cleanup:
    If (Err.Number<>0) Then
        MsgBox("An error has occurred. " & Err.Number)
    End If

    Set x = Nothing
    Set sd = Nothing
    Set ace = Nothing
    Set Dacl = Nothing
    Set Ace1 = Nothing
    Set Ace2 = Nothing
    Set obj = Nothing
    Set cls = Nothing

Im folgenden Codebeispiel werden Zugriffssteuerungseinträge angezeigt.

IADs *pADs = NULL;
IDispatch *pDisp = NULL;
IADsSecurityDescriptor *pSD = NULL;
VARIANT var;
HRESULT hr = S_OK;
 
VariantInit(&var);

hr = ADsOpenObject(L"LDAP://OU=Sales, DC=Fabrikam,DC=com",NULL,NULL,
                   ADS_SECURE_AUTHENTICATION, IID_IADs,(void**)&pADs);
if(FAILED(hr)) {goto Cleanup;}

hr = pADs->Get(CComBSTR("ntSecurityDescriptor"),&var);
if(FAILED(hr)) {goto Cleanup;}

pDisp = V_DISPATCH(&var);

hr = pDisp->QueryInterface(IID_IADsSecurityDescriptor,(void**)&pSD);
if(FAILED(hr)) {goto Cleanup;}
pDisp->Release();


pSD->get_DiscretionaryAcl(&pDisp);

hr = pDisp->QueryInterface(IID_IADsAccessControlList,(void**)&pACL);
if(FAILED(hr)) {goto Cleanup;}

hr = DisplayAccessInfo(pSD);
if(FAILED(hr)) {goto Cleanup;}
VariantClear(&var);

Cleanup:
    if(pADs) pADs->Release();
    if(pDisp) pDisp->Release();
    if(pSD) pSD->Release();
    return hr;



HRESULT DisplayAccessInfo(IADsSecurityDescriptor *pSD)
{
    LPWSTR lpszFunction = L"DisplayAccessInfo";
    IDispatch *pDisp = NULL;
    IADsAccessControlList *pACL = NULL;
    IADsAccessControlEntry *pACE = NULL;
    IEnumVARIANT *pEnum = NULL;
    IUnknown *pUnk = NULL;
    HRESULT hr = S_OK;
    ULONG nFetch = 0;
    BSTR bstrValue = NULL;
    VARIANT var;
    LPWSTR lpszOutput = NULL;
    LPWSTR lpszMask = NULL;
    size_t nLength = 0;
    
    VariantInit(&var);
    
    hr = pSD->get_DiscretionaryAcl(&pDisp);
    if(FAILED(hr)){goto Cleanup;}
    hr = pDisp->QueryInterface(IID_IADsAccessControlList,(void**)&pACL);
    if(FAILED(hr)){goto Cleanup;}
    
    hr = pACL->get__NewEnum(&pUnk);
    if(FAILED(hr)){goto Cleanup;}
    
    hr = pUnk->QueryInterface(IID_IEnumVARIANT,(void**)&pEnum);
    
    if(FAILED(hr)){goto Cleanup;}
    hr = pEnum->Next(1,&var,&nFetch);
    
    while(hr == S_OK)
    {
        if(nFetch==1)
        {
            if(VT_DISPATCH != V_VT(&var))
            {
                goto Cleanup;
            }
            
            pDisp = V_DISPATCH(&var);
            hr = pDisp->QueryInterface(IID_IADsAccessControlEntry,(void**)&pACE);
            
            if(SUCCEEDED(hr))
            {
                lpszMask = L"Trustee: %s";
                hr = pACE->get_Trustee(&bstrValue);
                nLength = wcslen(lpszMask) + wcslen(bstrValue) + 1;
                lpszOutput = new WCHAR[nLength];
                swprintf_s(lpszOutput,lpszMask,bstrValue);
                printf(lpszOutput);
                delete [] lpszOutput;
                SysFreeString(bstrValue);
                
                pACE->Release();
                pACE = NULL;
                pDisp->Release();
                pDisp = NULL;
            }       
            
            VariantClear(&var);
        }       
        hr = pEnum->Next(1,&var,&nFetch);
    }
    
Cleanup:
    if(pDisp) pDisp->Release();
    if(pACL) pACL->Release();
    if(pACE) pACE->Release();
    if(pEnum) pEnum->Release();
    if(pUnk) pUnk->Release();
    if(szValue) SysFreeString(szValue);
    return hr;
}

Anforderungen

Anforderung Wert
Unterstützte Mindestversion (Client)
Windows Vista
Unterstützte Mindestversion (Server)
Windows Server 2008
Header
Iads.h
DLL
Activeds.dll
IID
IID _ IADsAccessControlEntry ist als B4F3A14C-9BDD-11D0-852C-00C04FD8D503 definiert.

Weitere Informationen

IADsAccessControlEntry

IADsAccessControlList

IADsSecurityDescriptor