IDirectoryObject::SetObjectAttributes 方法 (iads.h)

IDirectoryObject::SetObjectAttributes 方法修改ADS_ATTR_INFO结构中定义的一个或多个指定对象属性中的数据。

语法

HRESULT SetObjectAttributes(
  [in]  PADS_ATTR_INFO pAttributeEntries,
  [in]  DWORD          dwNumAttributes,
  [out] DWORD          *pdwNumAttributesModified
);

parameters

[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
标头 iads.h
DLL Activeds.dll

另请参阅

ADSI 错误代码

ADS_ATTR_INFO

IDirectoryObject