ADS_SYSTEMFLAG_ENUM-Enumeration (iads.h)

Die ADS_SYSTEMFLAG_ENUM-Enumeration definiert einige der Werte, die dem systemFlags-Attribut zugewiesen werden können. Einige der Werte in der Enumeration sind spezifisch für attributeSchema-Objekte ; Andere Werte können für Objekte einer beliebigen Klasse festgelegt werden.

Syntax

typedef enum __MIDL___MIDL_itf_ads_0001_0017_0001 {
  ADS_SYSTEMFLAG_DISALLOW_DELETE = 0x80000000,
  ADS_SYSTEMFLAG_CONFIG_ALLOW_RENAME = 0x40000000,
  ADS_SYSTEMFLAG_CONFIG_ALLOW_MOVE = 0x20000000,
  ADS_SYSTEMFLAG_CONFIG_ALLOW_LIMITED_MOVE = 0x10000000,
  ADS_SYSTEMFLAG_DOMAIN_DISALLOW_RENAME = 0x8000000,
  ADS_SYSTEMFLAG_DOMAIN_DISALLOW_MOVE = 0x4000000,
  ADS_SYSTEMFLAG_CR_NTDS_NC = 0x1,
  ADS_SYSTEMFLAG_CR_NTDS_DOMAIN = 0x2,
  ADS_SYSTEMFLAG_ATTR_NOT_REPLICATED = 0x1,
  ADS_SYSTEMFLAG_ATTR_IS_CONSTRUCTED = 0x4
} ADS_SYSTEMFLAG_ENUM;

Konstanten

 
ADS_SYSTEMFLAG_DISALLOW_DELETE
Wert: 0x80000000
Gibt ein Objekt an, das nicht gelöscht werden kann.
ADS_SYSTEMFLAG_CONFIG_ALLOW_RENAME
Wert: 0x40000000
Wenn dieses Flag für Objekte in der Konfigurationspartition festgelegt ist, kann das Objekt umbenannt werden. Andernfalls kann das Objekt nicht umbenannt werden. Dieses Flag wird standardmäßig nicht für neue Objekte festgelegt, die unter der Konfigurationspartition erstellt wurden, und Sie können dieses Flag nur während der Objekterstellung festlegen.
ADS_SYSTEMFLAG_CONFIG_ALLOW_MOVE
Wert: 0x20000000
Wenn dieses Flag für Objekte in der Konfigurationspartition festgelegt ist, kann das Objekt verschoben werden. Andernfalls kann das Objekt nicht verschoben werden. Dieses Flag wird standardmäßig nicht für neue Objekte festgelegt, die unter der Konfigurationspartition erstellt wurden, und Sie können dieses Flag nur während der Objekterstellung festlegen.
ADS_SYSTEMFLAG_CONFIG_ALLOW_LIMITED_MOVE
Wert: 0x10000000
Wenn dieses Flag für Objekte in der Konfigurationspartition festgelegt ist, kann das Objekt mit Einschränkungen verschoben werden. Andernfalls kann das Objekt nicht verschoben werden. Dieses Flag wird standardmäßig nicht für neue Objekte festgelegt, die unter der Konfigurationspartition erstellt wurden, und Sie können dieses Flag nur während der Objekterstellung festlegen.
ADS_SYSTEMFLAG_DOMAIN_DISALLOW_RENAME
Wert: 0x8000000
Gibt ein Domänenobjekt an, das nicht umbenannt werden kann.
ADS_SYSTEMFLAG_DOMAIN_DISALLOW_MOVE
Wert: 0x4000000
Identifiziert ein Domänenobjekt, das nicht verschoben werden kann.
ADS_SYSTEMFLAG_CR_NTDS_NC
Wert: 0x1
Der Benennungskontext befindet sich in NTDS.
ADS_SYSTEMFLAG_CR_NTDS_DOMAIN
Wert: 0x2
Der Benennungskontext ist eine Domäne.
ADS_SYSTEMFLAG_ATTR_NOT_REPLICATED
Wert: 0x1
Wenn dieses Flag im systemFlags-Attribut eines attributSchema-Objekts festgelegt ist, soll das Attribut nicht repliziert werden.
ADS_SYSTEMFLAG_ATTR_IS_CONSTRUCTED
Wert: 0x4
Wenn dieses Flag im systemFlags-Attribut eines attributSchema-Objekts festgelegt ist, ist das Attribut eine konstruierte Eigenschaft.

Hinweise

Für classSchema - und attributSchema-Objekte gibt das 0x10 Bit des systemFlags-Attributs ein Objekt an, das Teil des Basisschemas ist, das in Active Directory enthalten ist. Dieses Bit kann nicht für neue classSchema - und attributeSchema-Objekte festgelegt werden. Die ADS_SYSTEMFLAG_ENUM-Enumeration enthält keine Konstante für dieses Bit.

Hinweis Da VBScript keine Daten aus einer Typbibliothek lesen kann, erkennen VBScript-Anwendungen die oben definierten symbolischen Konstanten nicht. Verwenden Sie stattdessen die numerischen Konstanten, um die entsprechenden Flags in Ihren VBScript-Anwendungen festzulegen. Um die symbolischen Konstanten als gute Programmierpraxis zu verwenden, sollten Sie explizite Deklarationen solcher Konstanten vornehmen, wie hier in Ihren VBScript-Anwendungen geschehen.
 

Beispiele

Das folgende Codebeispiel zeigt, wie Elemente der ADS_SYSTEMFLAG_ENUM-Enumeration zusammen mit der IDirectorySearch-Schnittstelle verwendet werden, um nicht replizierte Eigenschaften zu durchsuchen.

#include <wchar.h>
#include <activeds.h>
#include <atlbase.h>
 
HRESULT hr = E_FAIL;
LPWSTR szPrefix = L"LDAP://%s";
LPWSTR szPath = NULL;
IDirectorySearch *pSchemaNC = NULL;
IADs *pObject = NULL;
size_t nLength = 0;
LPWSTR pszSearchFilterTemplate = L"(&(objectCategory=attributeSchema)(systemFlags:1.2.840.113556.1.4.804:=%d))";
LPWSTR pszSearchFilter = NULL;
 
CoInitialize(NULL);     // Initialize COM

// Get rootDSE and the schema container distinguished name.
// Bind to current user's domain using current user's security context.
hr = ADsOpenObject(L"LDAP://rootDSE",
                NULL,
                NULL,
                ADS_SECURE_AUTHENTICATION, // Use Secure Authentication.
                IID_IADs,
                (void**)&pObject);
if (SUCCEEDED(hr))
{
    CComVarinat svar;
    hr = pObject->Get(CComBSTR("schemaNamingContext"), &svar);
    if (SUCCEEDED(hr))
    {
        nLength = wcslen(szPrefix) + wcslen(svar.bstrVal) + 1;
        szPath = new WCHAR[nLength];
        swprintf_s(szPath, szPrefix, svar.bstrVal);

        hr = ADsOpenObject(szPath,
            NULL,
            NULL,
            ADS_SECURE_AUTHENTICATION, 
            IID_IDirectorySearch,
            (void**)&pSchemaNC);

        delete [] szPath;

        if (SUCCEEDED(hr))
        {
            wprintf(L"Find non-replicated attributes\n");
 
            // Create search filter to find attributes with systemFlags that 
            // match ADS_SYSTEMFLAG_ATTR_NOT_REPLICATED
            nLength = wcslen(pszSearchFilterTemplate) + 25 + 1;
            pszSearchFilter = new WCHAR[nLength];
            swprintf_s(pszSearchFilter, pszSearchFilterTemplate, ADS_SYSTEMFLAG_ATTR_NOT_REPLICATED);
     
            // Attributes are one-level deep in the schema container 
            // so only need to search one level.
            ADS_SEARCHPREF_INFO SearchPrefs;
            SearchPrefs.dwSearchPref = ADS_SEARCHPREF_SEARCH_SCOPE;
            SearchPrefs.vValue.dwType = ADSTYPE_INTEGER;
            SearchPrefs.vValue.Integer = ADS_SCOPE_ONELEVEL;
            DWORD dwNumPrefs = 1;
     
            // COL for iterations.
            ADS_SEARCH_COLUMN    col;
     
            // Handle used for searching.
            ADS_SEARCH_HANDLE hSearch;
     
            IADs    *pObj = NULL;
            IADs    * pIADs = NULL;
 
            // Set the search preference.
            hr = pSchemaNC->SetSearchPreference( &SearchPrefs, dwNumPrefs);
            if (FAILED(hr)) 
            {
                return hr;
            }
 
            CONST DWORD dwAttrNameSize = 1;
            LPOLESTR pszAttribute[dwAttrNameSize];
            pszAttribute[0] = L"cn";

            // Execute the search.
            hr = pSchemaNC->ExecuteSearch(pszSearchFilter,
                                          pszAttribute,
                                          dwAttrNameSize,
                                          &hSearch );

            delete [] pszSearchFilter;
            if ( SUCCEEDED(hr) ) 
            { 
                // Call IDirectorySearch::GetNextRow() to retrieve 
                // the next row of data.
                while( pSchemaNC->GetNextRow( hSearch) != S_ADS_NOMORE_ROWS) 
                {
                    // Loop through the array of passed column names,
                    // print the data for each column.
                    for (DWORD x = 0; x < dwAttrNameSize; x++) 
                    {
                        // Get the data for this column.
                        hr = pSchemaNC->GetColumn( hSearch, 
                                           pszAttribute[x], 
                                           &col );
                        if ( SUCCEEDED(hr) ) 
                        {
                            // Print the data for the column and 
                            // free the column.
                            if (col.dwADsType == ADSTYPE_CASE_IGNORE_STRING)
                            {
                                wprintf(L"%s: %s\r\n", 
                                pszAttribute[x], 
                                col.pADsValues->CaseIgnoreString); 
                            }
                            else
                            {
                                wprintf(L"<%s property is not a string>", pszAttribute[x]);
                            }

                            pSchemaNC->FreeColumn( &col );
                        }
                    }
                }

                // Close the search handle to clean up.
                pSchemaNC->CloseSearchHandle(hSearch);
            } 
        }
    } 

    pObject->Release();
}

CoUninitialize();    // uninitialize COM.

Anforderungen

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

Weitere Informationen

ADSI-Enumerationen

Idirectorysearch