enumerasi ADS_SYSTEMFLAG_ENUM (iads.h)

Enumerasi ADS_SYSTEMFLAG_ENUM mendefinisikan beberapa nilai yang dapat ditetapkan ke atribut systemFlags . Beberapa nilai dalam enumerasi khusus untuk objek attributeSchema ; nilai lain dapat diatur pada objek dari kelas apa pun.

Sintaks

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;

Konstanta

 
ADS_SYSTEMFLAG_DISALLOW_DELETE
Nilai: 0x80000000
Mengidentifikasi objek yang tidak dapat dihapus.
ADS_SYSTEMFLAG_CONFIG_ALLOW_RENAME
Nilai: 0x40000000
Untuk objek dalam partisi konfigurasi, jika bendera ini diatur, objek dapat diganti namanya; jika tidak, objek tidak dapat diganti namanya. Secara default, bendera ini tidak diatur pada objek baru yang dibuat di bawah partisi konfigurasi, dan Anda dapat mengatur bendera ini hanya selama pembuatan objek.
ADS_SYSTEMFLAG_CONFIG_ALLOW_MOVE
Nilai: 0x20000000
Untuk objek dalam partisi konfigurasi, jika bendera ini diatur, objek dapat dipindahkan; jika tidak, objek tidak dapat dipindahkan. Secara default, bendera ini tidak diatur pada objek baru yang dibuat di bawah partisi konfigurasi, dan Anda dapat mengatur bendera ini hanya selama pembuatan objek.
ADS_SYSTEMFLAG_CONFIG_ALLOW_LIMITED_MOVE
Nilai: 0x10000000
Untuk objek dalam partisi konfigurasi, jika bendera ini diatur, objek dapat dipindahkan dengan batasan; jika tidak, objek tidak dapat dipindahkan. Secara default, bendera ini tidak diatur pada objek baru yang dibuat di bawah partisi konfigurasi, dan Anda dapat mengatur bendera ini hanya selama pembuatan objek.
ADS_SYSTEMFLAG_DOMAIN_DISALLOW_RENAME
Nilai: 0x8000000
Mengidentifikasi objek domain yang tidak dapat diganti namanya.
ADS_SYSTEMFLAG_DOMAIN_DISALLOW_MOVE
Nilai: 0x4000000
Mengidentifikasi objek domain yang tidak dapat dipindahkan.
ADS_SYSTEMFLAG_CR_NTDS_NC
Nilai: 0x1
Konteks penamaan ada di NTDS.
ADS_SYSTEMFLAG_CR_NTDS_DOMAIN
Nilai: 0x2
Konteks penamaan adalah domain.
ADS_SYSTEMFLAG_ATTR_NOT_REPLICATED
Nilai: 0x1
Jika bendera ini diatur dalam atribut systemFlags dari objek attributeSchema , atribut tidak akan direplikasi.
ADS_SYSTEMFLAG_ATTR_IS_CONSTRUCTED
Nilai: 0x4
Jika bendera ini diatur dalam atribut systemFlags dari objek attributeSchema , atribut adalah properti yang dibangun.

Keterangan

Untuk objek classSchema dan attributeSchema , bit 0x10 atribut systemFlags menunjukkan objek yang merupakan bagian dari skema dasar yang disertakan dengan Direktori Aktif. Bit ini tidak dapat diatur pada objek classSchema dan attributeSchema baru. Enumerasi ADS_SYSTEMFLAG_ENUM tidak menyertakan konstanta untuk bit ini.

Catatan Karena VBScript tidak dapat membaca data dari pustaka jenis, aplikasi VBScript tidak mengenali konstanta simbolis seperti yang ditentukan di atas. Gunakan konstanta numerik sebagai gantinya untuk mengatur bendera yang sesuai di aplikasi VBScript Anda. Untuk menggunakan konstanta simbolis sebagai praktik pemrograman yang baik, Anda harus membuat deklarasi eksplisit dari konstanta tersebut, seperti yang dilakukan di sini, dalam aplikasi VBScript Anda.
 

Contoh

Contoh kode berikut menunjukkan bagaimana elemen enumerasi ADS_SYSTEMFLAG_ENUM , bersama dengan antarmuka IDirectorySearch , digunakan untuk mencari properti yang tidak direplikasi.

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

Persyaratan

   
Klien minimum yang didukung Windows Vista
Server minimum yang didukung Windows Server 2008
Header iads.h

Lihat juga

Enumerasi ADSI

IDirectorySearch