Freigeben über


ADS_SECURITY_INFO_ENUM Enumeration (iads.h)

Die ADS_SECURITY_INFO_ENUM-Enumeration gibt die verfügbaren Optionen zum Untersuchen von Sicherheitsdaten eines Objekts an.

Syntax

typedef enum __MIDL___MIDL_itf_ads_0001_0077_0002 {
  ADS_SECURITY_INFO_OWNER = 0x1,
  ADS_SECURITY_INFO_GROUP = 0x2,
  ADS_SECURITY_INFO_DACL = 0x4,
  ADS_SECURITY_INFO_SACL = 0x8
} ADS_SECURITY_INFO_ENUM;

Konstanten

 
ADS_SECURITY_INFO_OWNER
Wert: 0x1
Liest oder legt die Besitzerdaten fest.
ADS_SECURITY_INFO_GROUP
Wert: 0x2
Liest oder legt die Gruppendaten fest.
ADS_SECURITY_INFO_DACL
Wert: 0x4
Liest oder legt die diskretionären Zugriffssteuerungslistendaten fest.
ADS_SECURITY_INFO_SACL
Wert: 0x8
Liest oder legt die Daten der Systemzugriffssteuerungsliste fest.

Hinweise

Die in dieser Enumeration definierten Optionen sind Bitmasken. Mehrere Optionen können mit entsprechenden bitweisen Vorgängen festgelegt werden.

Um die Sicherheitsdaten für ein Objekt zu lesen, verwenden Sie die IADsObjectOptions-Schnittstelle , und geben Sie die in dieser Enumeration aufgeführten Sicherheitsdatenoptionen an.

In der folgenden Liste werden gängige Flagkombinationen und deren Verwendung aufgeführt.

Flag-Kombination BESCHREIBUNG
ADS_SECURITY_INFO_OWNER, ADS_SECURITY_INFO_GROUP und ADS_SECURITY_INFO_DACL Ermöglichen Sie Benutzern das Lesen der Sicherheitsdaten des Besitzers, der Gruppe oder der DACL eines Objekts. Dies ist die Standardeinstellung, wenn ein Objekt erstellt wird.
ADS_SECURITY_INFO_OWNER, ADS_SECURITY_INFO_GROUP, ADS_SECURITY_INFO_DACL und ADS_SECURITY_INFO_SACL Ermöglichen Sie Benutzern das Lesen der SACL. Das ADS_SECURITY_INFO_SACL-Flag kann nicht selbst verwendet werden.
 

Derzeit sind solche Optionen nur für Active Directory verfügbar.

Da Visual Basic Scripting Edition (VBScript) keine Daten aus einer Typbibliothek lesen kann, muss eine Anwendung die entsprechenden numerischen Konstanten anstelle der symbolischen Konstanten verwenden, um die entsprechenden Flags festzulegen. Um die symbolischen Konstanten als gute Programmierpraxis zu verwenden, schreiben Sie explizite Deklarationen dieser Konstanten, wie hier beschrieben.

Beispiele

Im folgenden Codebeispiel wird die Anzahl der Zugriffssteuerungseinträge in einer SACL angezeigt.

Const ADS_SECURITY_INFO_OWNER = &H1
Const ADS_SECURITY_INFO_GROUP = &H2
Const ADS_SECURITY_INFO_DACL = &H4
Const ADS_SECURITY_INFO_SACL = &H8

Const ADS_OPTION_SECURITY_MASK = 3

Dim x As IADs
Dim dso As IADsOpenDSObject
Dim adsPath As String
Dim sd As IADsSecurityDescriptor
Dim sacl As IADsAccessControlList
Dim objOps As IADsObjectOptions
Dim opt As Variant
Dim canReadSacl As Variant
 
Set dso = GetObject("LDAP:")
adsPath = "LDAP://ArcSrv1/dc=Sales,dc=Fabrikam,dc=com"
Set x = dso.OpenDSObject(adsPath, vbNullString, vbNullString, 1)
Set objOps = x
 
canReadSacl = ADS_SECURITY_INFO_OWNER _
                Or ADS_SECURITY_INFO_GROUP _
                Or ADS_SECURITY_INFO_DACL _
                Or ADS_SECURITY_INFO_SACL
 
opt = objOps.GetOption(ADS_OPTION_SECURITY_MASK)
If opt <> canReadSacl Then
    objOps.SetOption ADS_OPTION_SECURITY_MASK, canReadSacl
End If
Set sd = x.Get("ntSecurityDescriptor")
Set sacl = sd.SystemAcl
Debug.Print "sacl(aceCount)= " & sacl.AceCount

Im folgenden Codebeispiel wird die Anzahl der Zugriffssteuerungseinträge in einer System-ACL angezeigt. Aus Gründen der Kürze wird die Fehlerüberprüfung weggelassen.

void TestObjectOptions()
{
    long lCanReadSACL = ADS_SECURITY_INFO_OWNER | 
        ADS_SECURITY_INFO_GROUP | 
        ADS_SECURITY_INFO_DACL | 
        ADS_SECURITY_INFO_SACL;

    HRESULT hr = S_OK;
    CComPtr<IADs> spObj;
    hr = ADsOpenObject(L"LDAP://arcSrv1/dc=Sales,dc=Fabrikam,dc=com", 
        NULL, 
        NULL,
        ADS_SECURE_AUTHENTICATION,
        IID_IADs,
        (void**)&spObj);
    if(S_OK != hr)
    {
        return;
    }

    CComPtr<IADsObjectOptions> spObjOps;
    hr = spObj->QueryInterface(IID_IADsObjectOptions, (void**)&spObjOps);
    if(S_OK != hr)
    {
        return;
    }

    CComVariant svar;
    hr = spObjOps->GetOption(ADS_OPTION_SECURITY_MASK, &svar);
    if(S_OK != hr)
    {
        return;
    }

    if(V_I4(&svar) != lCanReadSACL)
    {
        svar = lCanReadSACL;
        hr = spObjOps->SetOption(ADS_OPTION_SECURITY_MASK, svar);
    }

    hr = spObj->Get(CComBSTR("ntSecurityDescriptor"), &svar);
    if(S_OK != hr)
    {
        return;
    }

    CComPtr<IADsSecurityDescriptor> spSd;
    hr = V_DISPATCH(&svar)->QueryInterface(IID_IADsSecurityDescriptor, 
                                            (void**)&spSd);
    if(S_OK != hr)
    {
        return;
    }

    CComPtr<IDispatch> spDisp;
    hr = spSd->get_SystemAcl(&spDisp);
    if(S_OK != hr)
    {
        return;
    }

    CComPtr<IADsAccessControlList> spSacl;
    hr = spDisp->QueryInterface(IID_IADsAccessControlList, 
                                (void**)&spSacl);
    if(S_OK != hr)
    {
        return;
    }

    LONG lOptions;
    hr = spSacl->get_AceCount(&lOptions);
    if(S_OK != hr)
    {
        return;
    }

    _tprintf(TEXT("Number of ACE's in the SACL is %d\n"), lOptions);
}

Anforderungen

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

Weitere Informationen

ADSI-Enumerationen

IADsObjectOptions

IADsObjectOptions::GetOption

IADsObjectOptions::SetOption