Freigeben über


Methoden der IADsAccessControlEntry-Eigenschaft

Die Eigenschaftenmethoden der IADsAccessControlEntry-Schnittstelle rufen die in der folgenden Tabelle beschriebenen Eigenschaften ab oder legen sie fest. Weitere Informationen finden Sie unter Methoden der Schnittstelleneigenschaft.

Eigenschaften

Accessmask

Enthält eine Reihe von Flags, die 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: Lese-/Schreibzugriff

Skriptdatentyp: LONG

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

AceFlags

Enthält eine Reihe von Flags, die 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 im AceFlags-Element der ACE_HEADER-Struktur .

Zugriffstyp: Lese-/Schreibzugriff

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 von 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 im AceType-Element der ACE_HEADER-Struktur .

Zugriffstyp: Lese-/Schreibzugriff

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 geerbten Objekttyp verfügt. Gültige Flags werden in der ADS_FLAGTYPE_ENUM-Enumeration definiert.

Zugriffstyp: Lese-/Schreibzugriff

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. Sein Wert ist eine GUID für ein Objekt im Zeichenfolgenformat. Wenn eine solche GUID festgelegt ist, gilt die ACE nur für das Objekt, auf das von der GUID verwiesen wird.

Zugriffstyp: Lese-/Schreibzugriff

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. Sein Wert ist eine GUID für eine Eigenschaft oder ein Objekt im Zeichenfolgenformat. Die GUID verweist 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: Lese-/Schreibzugriff

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: Lese-/Schreibzugriff

Skriptdatentyp: BSTR

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

Beispiele

Im folgenden Codebeispiel wird gezeigt, wie Sie einer diskretionären ACL mithilfe der IADsAccessControlEntry-Eigenschaftenmethoden Einträge hinzufügen.

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)
WindowsServer 2008
Header
Iads.h
DLL
Activeds.dll
IID
IID_IADsAccessControlEntry ist definiert als B4F3A14C-9BDD-11D0-852C-00C04FD8D503

Siehe auch

IADsAccessControlEntry

IADsAccessControlList

IADsSecurityDescriptor