ADS_SYSTEMFLAG_ENUM enumeração (iads.h)

A enumeração ADS_SYSTEMFLAG_ENUM define alguns dos valores que podem ser atribuídos ao atributo systemFlags . Alguns dos valores na enumeração são específicos para objetos attributeSchema ; outros valores podem ser definidos em objetos de qualquer 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
Valor: 0x80000000
Identifica um objeto que não pode ser excluído.
ADS_SYSTEMFLAG_CONFIG_ALLOW_RENAME
Valor: 0x40000000
Para objetos na partição de configuração, se esse sinalizador estiver definido, o objeto poderá ser renomeado; caso contrário, o objeto não pode ser renomeado. Por padrão, esse sinalizador não é definido em novos objetos criados na partição de configuração e você pode definir esse sinalizador somente durante a criação do objeto.
ADS_SYSTEMFLAG_CONFIG_ALLOW_MOVE
Valor: 0x20000000
Para objetos na partição de configuração, se esse sinalizador estiver definido, o objeto poderá ser movido; caso contrário, o objeto não pode ser movido. Por padrão, esse sinalizador não é definido em novos objetos criados na partição de configuração e você pode definir esse sinalizador somente durante a criação do objeto.
ADS_SYSTEMFLAG_CONFIG_ALLOW_LIMITED_MOVE
Valor: 0x10000000
Para objetos na partição de configuração, se esse sinalizador estiver definido, o objeto poderá ser movido com restrições; caso contrário, o objeto não pode ser movido. Por padrão, esse sinalizador não é definido em novos objetos criados na partição de configuração e você pode definir esse sinalizador somente durante a criação do objeto.
ADS_SYSTEMFLAG_DOMAIN_DISALLOW_RENAME
Valor: 0x8000000
Identifica um objeto de domínio que não pode ser renomeado.
ADS_SYSTEMFLAG_DOMAIN_DISALLOW_MOVE
Valor: 0x4000000
Identifica um objeto de domínio que não pode ser movido.
ADS_SYSTEMFLAG_CR_NTDS_NC
Valor: 0x1
O contexto de nomenclatura está no NTDS.
ADS_SYSTEMFLAG_CR_NTDS_DOMAIN
Valor: 0x2
O contexto de nomenclatura é um domínio.
ADS_SYSTEMFLAG_ATTR_NOT_REPLICATED
Valor: 0x1
Se esse sinalizador for definido no atributo systemFlags de um objeto attributeSchema , o atributo não será replicado.
ADS_SYSTEMFLAG_ATTR_IS_CONSTRUCTED
Valor: 0x4
Se esse sinalizador for definido no atributo systemFlags de um objeto attributeSchema , o atributo será uma propriedade construída.

Comentários

Para objetos classSchema e attributeSchema , o bit 0x10 do atributo systemFlags indica um objeto que faz parte do esquema base incluído no Active Directory. Esse bit não pode ser definido em novos objetos classSchema e attributeSchema . A enumeração ADS_SYSTEMFLAG_ENUM não inclui uma constante para esse bit.

Nota Como o VBScript não pode ler dados de uma biblioteca de tipos, os aplicativos VBScript não reconhecem as constantes simbólicas, conforme definido acima. Em vez disso, use as constantes numéricas para definir os sinalizadores apropriados em seus aplicativos VBScript. Para usar as constantes simbólicas como uma boa prática de programação, você deve fazer declarações explícitas dessas constantes, conforme feito aqui, em seus aplicativos VBScript.
 

Exemplos

O exemplo de código a seguir mostra como os elementos da enumeração ADS_SYSTEMFLAG_ENUM , juntamente com a interface IDirectorySearch , são usados para pesquisar propriedades não replicadas.

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

Requisitos

   
Cliente mínimo com suporte Windows Vista
Servidor mínimo com suporte Windows Server 2008
Cabeçalho iads.h

Confira também

Enumerações ADSI

Idirectorysearch