Метод IDirectoryObject::SetObjectAttributes (iads.h)
Метод IDirectoryObject::SetObjectAttributes изменяет данные в одном или нескольких указанных атрибутах объекта, определенных в структуре ADS_ATTR_INFO .
Синтаксис
HRESULT SetObjectAttributes(
[in] PADS_ATTR_INFO pAttributeEntries,
[in] DWORD dwNumAttributes,
[out] DWORD *pdwNumAttributesModified
);
Параметры
[in] pAttributeEntries
Предоставляет массив атрибутов для изменения. Каждый атрибут содержит имя атрибута, выполняемую операцию и значение атрибута, если применимо. Дополнительные сведения см. в разделе структура ADS_ATTR_INFO .
[in] dwNumAttributes
Предоставляет количество изменяемых атрибутов. Это значение должно соответствовать размеру массива pAttributeEntries .
[out] pdwNumAttributesModified
Предоставляет указатель на переменную DWORD , содержащую количество атрибутов, измененных методом SetObjectAttributes .
Возвращаемое значение
Этот метод возвращает стандартные возвращаемые значения, в том числе S_OK при успешной настройке атрибутов.
Дополнительные сведения и другие возвращаемые значения см. в разделе Коды ошибок ADSI.
Комментарии
В Active Directory (поставщик LDAP) метод IDirectoryObject::SetObjectAttributes является транзакционным вызовом. Атрибуты либо фиксируются, либо удаляются. Другие поставщики каталогов могут не выполнять транзакции по вызову.
Active Directory не разрешает повторяющиеся значения для многозначного атрибута. Однако при вызове SetObjectAttributes для добавления повторяющегося значения к атрибуту с несколькими значениями объекта Active Directory вызов SetObjectAttributes завершается успешно, но повторяющееся значение игнорируется.
Аналогичным образом, если вы используете SetObjectAttributes для удаления одного или нескольких значений из свойства с несколькими значениями объекта Active Directory, операция будет выполнена успешно, даже если для свойства не задано любое или все указанные значения.
Примеры
В следующем примере кода C++ атрибут sn объекта пользователя задает значение Price в виде строки без учета регистра.
HRESULT hr;
IDirectoryObject *pDirObject=NULL;
DWORD dwReturn;
ADSVALUE snValue;
ADS_ATTR_INFO attrInfo[] = { {L"sn",ADS_ATTR_UPDATE, ADSTYPE_CASE_IGNORE_STRING, &snValue, 1} };
DWORD dwAttrs = sizeof(attrInfo)/sizeof(ADS_ATTR_INFO);
snValue.dwType=ADSTYPE_CASE_IGNORE_STRING;
snValue.CaseIgnoreString = L"Price";
hr = ADsGetObject(L"LDAP://CN=Jeff Smith,OU=Sales,DC=Fabrikam,DC=com",
IID_IDirectoryObject,
(void**) &pDirObject );
if ( SUCCEEDED(hr) )
{
hr = pDirObject->SetObjectAttributes(attrInfo, dwAttrs, &dwReturn);
pDirObject->Release();
}
Требования
Минимальная версия клиента | Windows Vista |
Минимальная версия сервера | Windows Server 2008 |
Целевая платформа | Windows |
Header | iads.h |
DLL | Activeds.dll |