次の方法で共有


ADS_SYSTEMFLAG_ENUM列挙 (iads.h)

ADS_SYSTEMFLAG_ENUM列挙は、systemFlags 属性に割り当てることができる値の一部を定義します。 列挙の値の一部は attributeSchema オブジェクトに固有です。その他の値は、任意のクラスのオブジェクトに設定できます。

構文

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;

定数

 
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
名前付けコンテキストは NTDS にあります。
ADS_SYSTEMFLAG_CR_NTDS_DOMAIN
値: 0x2
名前付けコンテキストはドメインです。
ADS_SYSTEMFLAG_ATTR_NOT_REPLICATED
値: 0x1
attributeSchema オブジェクトの systemFlags 属性でこのフラグが設定されている場合、属性はレプリケートされません。
ADS_SYSTEMFLAG_ATTR_IS_CONSTRUCTED
値: 0x4
attributeSchema オブジェクトの systemFlags 属性でこのフラグが設定されている場合、属性は構築されたプロパティです。

解説

classSchema オブジェクトと attributeSchema オブジェクトの場合、systemFlags 属性の0x10 ビットは、Active Directory に含まれる基本スキーマの一部であるオブジェクトを示します。 このビットは、新しい classSchema オブジェクトと attributeSchema オブジェクトでは設定できません。 ADS_SYSTEMFLAG_ENUM列挙には、このビットの定数は含まれません。

メモ VBScript はタイプ ライブラリからデータを読み取ることができないため、VBScript アプリケーションは上記で定義したシンボリック定数を認識しません。 代わりに数値定数を使用して、VBScript アプリケーションで適切なフラグを設定します。 シンボリック定数を適切なプログラミングプラクティスとして使用するには、VBScript アプリケーションで、ここで行われるように、このような定数を明示的に宣言する必要があります。
 

次のコード例は、 ADS_SYSTEMFLAG_ENUM 列挙体の要素を IDirectorySearch インターフェイスと共に使用して、レプリケートされていないプロパティを検索する方法を示しています。

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

要件

   
サポートされている最小のクライアント Windows Vista
サポートされている最小のサーバー Windows Server 2008
Header iads.h

関連項目

ADSI 列挙

IDirectorySearch