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