Partager via


énumération ADS_SYSTEMFLAG_ENUM (iads.h)

L’énumération ADS_SYSTEMFLAG_ENUM définit certaines des valeurs qui peuvent être affectées à l’attribut systemFlags. Certaines des valeurs de l’énumération sont spécifiques aux objets attributeSchema ; d’autres valeurs peuvent être définies sur des objets de n’importe quelle classe.

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;

Constantes

 
ADS_SYSTEMFLAG_DISALLOW_DELETE
Valeur : 0x80000000
Identifie un objet qui ne peut pas être supprimé.
ADS_SYSTEMFLAG_CONFIG_ALLOW_RENAME
Valeur : 0x40000000
Pour les objets de la partition de configuration, si cet indicateur est défini, l’objet peut être renommé ; sinon, l’objet ne peut pas être renommé. Par défaut, cet indicateur n’est pas défini sur les nouveaux objets créés sous la partition de configuration, et vous pouvez définir cet indicateur uniquement lors de la création de l’objet.
ADS_SYSTEMFLAG_CONFIG_ALLOW_MOVE
Valeur : 0x20000000
Pour les objets de la partition de configuration, si cet indicateur est défini, l’objet peut être déplacé ; sinon, l’objet ne peut pas être déplacé. Par défaut, cet indicateur n’est pas défini sur les nouveaux objets créés sous la partition de configuration, et vous pouvez définir cet indicateur uniquement lors de la création de l’objet.
ADS_SYSTEMFLAG_CONFIG_ALLOW_LIMITED_MOVE
Valeur : 0x10000000
Pour les objets de la partition de configuration, si cet indicateur est défini, l’objet peut être déplacé avec des restrictions ; sinon, l’objet ne peut pas être déplacé. Par défaut, cet indicateur n’est pas défini sur les nouveaux objets créés sous la partition de configuration, et vous pouvez définir cet indicateur uniquement lors de la création de l’objet.
ADS_SYSTEMFLAG_DOMAIN_DISALLOW_RENAME
Valeur : 0x8000000
Identifie un objet de domaine qui ne peut pas être renommé.
ADS_SYSTEMFLAG_DOMAIN_DISALLOW_MOVE
Valeur : 0x4000000
Identifie un objet de domaine qui ne peut pas être déplacé.
ADS_SYSTEMFLAG_CR_NTDS_NC
Valeur : 0x1
Le contexte de nommage est dans NTDS.
ADS_SYSTEMFLAG_CR_NTDS_DOMAIN
Valeur : 0x2
Le contexte de nommage est un domaine.
ADS_SYSTEMFLAG_ATTR_NOT_REPLICATED
Valeur : 0x1
Si cet indicateur est défini dans l’attribut systemFlags d’un objet attributeSchema , l’attribut ne doit pas être répliqué.
ADS_SYSTEMFLAG_ATTR_IS_CONSTRUCTED
Valeur : 0x4
Si cet indicateur est défini dans l’attribut systemFlags d’un objet attributeSchema , l’attribut est une propriété construite.

Notes

Pour les objets classSchema et attributeSchema , le bit 0x10 de l’attribut systemFlags indique un objet qui fait partie du schéma de base inclus avec Active Directory. Ce bit ne peut pas être défini sur les nouveaux objets classSchema et attributeSchema . L’énumération ADS_SYSTEMFLAG_ENUM n’inclut pas de constante pour ce bit.

Note Étant donné que VBScript ne peut pas lire les données d’une bibliothèque de types, les applications VBScript ne reconnaissent pas les constantes symboliques telles que définies ci-dessus. Utilisez plutôt les constantes numériques pour définir les indicateurs appropriés dans vos applications VBScript. Pour utiliser les constantes symboliques comme bonne pratique de programmation, vous devez faire des déclarations explicites de telles constantes, comme cela est fait ici, dans vos applications VBScript.
 

Exemples

L’exemple de code suivant montre comment les éléments de l’énumération ADS_SYSTEMFLAG_ENUM , ainsi que l’interface IDirectorySearch , sont utilisés pour rechercher des propriétés non répliquées.

#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.

Configuration requise

   
Client minimal pris en charge Windows Vista
Serveur minimal pris en charge Windows Server 2008
En-tête iads.h

Voir aussi

Énumérations ADSI

IDirectorySearch