IADs::SetInfo 方法 (iads.h)

IADs::SetInfo 方法将 ADSI 对象的缓存属性值保存到基础目录存储中。

语法

HRESULT SetInfo();

返回值

此方法支持标准返回值,包括成功操作S_OK。 有关详细信息,请参阅 ADSI 错误代码

注解

请务必强调 IADs::P utIADs::SetInfo 方法之间的差异。 前者 (或修改属性缓存中给定属性的) 值,而后者将属性缓存中的更改传播到基础目录存储中。 因此,如果在调用 IADs::SetInfo 之前调用 IADs::GetInfo (或 IADs::GetInfoEx) ,则 IADs::P ut 所做的任何属性值更改都将丢失。

由于 IADs::SetInfo 跨网络发送数据,因此尽量减少此方法的使用。 这减少了客户端对服务器的行程数。 例如,应在一批中将所有或大多数更改提交到缓存中的属性到永久性存储区。

此准则仅适用于 IADs::SetInfoIADs::P ut 方法的关系,与 IADs::P utEx 方法的关系不同。

下面的代码示例演示 了 IADs::P utIADs::SetInfo 之间的建议关系。

Dim obj as IADs
 
obj.Put(prop1,val1)
obj.Put(prop2.val2)
obj.Put(prop3.val3)
obj.SetInfo

下面的代码示例说明了 IADs::P utIADs::SetInfo 之间不建议使用的内容。

obj.Put(prop1,val1)
obj.SetInfo
obj.Put(prop2.val2)
obj.SetInfo
obj.Put(prop3.val3)
obj.SetInfo

IADs::P utEx 一起使用时, IADs::SetInfo 会将控制代码(如 ADS_PROPERTY_UPDATE 或 ADS_PROPERTY_CLEAR)指定的操作请求传递给基础目录存储。

示例

以下 Visual Basic 代码示例使用 IADs::SetInfo 方法将用户的属性值保存到基础目录。

Dim x as IADs
On Error GoTo Cleanup

Set x = GetObject("LDAP://CN=Administrator,CN=Users,DC=Fabrikam,DC=com")
'
' Update values in the cache.
'
x.Put "sn", "Smith"
x.Put "givenName", "Jeff"
x.Put "street", "1 Tanka Place"
x.Put "l", "Sammamish"
x.Put "st", "Washington"
'
' Commit changes to the directory.
x.SetInfo

Cleanup:
   If (Err.Number<>0) Then
      MsgBox("An error has occurred. " & Err.Number)
   End If
   Set x = Nothing

以下 C++ 代码示例更新属性缓存中的属性值,并使用 IADs::SetInfo 提交对目录存储的更改。 为简洁起见,省略错误检查。

IADs *pAds NULL;
VARIANT var;
HRESULT hr = S_OK;
LPWSTR path=L"LDAP://CN=Administrator,CN=Users,DC=Fabrikam,DC=com";
hr = ADsGetObject( path, IID_IADs, (void**) pADs);

if(!(hr==S_OK)) {return hr;}

VariantInit(&var);
// Update values in the cache.
V_BSTR(&var) = SysAllocString(L"Smith");
V_VT(&var) = VT_BSTR;
hr = pADs->Put(CComBSTR("sn"), var );
VariantClear(&var);
 
V_BSTR(&var) = SysAllocString(L"Jeff");
V_VT(&var) = VT_BSTR;
hr = pADs->Put(CComBSTR("givenName"), var );
VariantClear(&var);
 
V_BSTR(&var) = SysAllocString(L"1 Tanka Place");
V_VT(&var) = VT_BSTR;
hr = pADs->Put(CComBSTR("street"), var );
VariantClear(&var);
 
V_BSTR(&var) = SysAllocString(L"Sammamish");
V_VT(&var) = VT_BSTR;
hr = pADs->Put(CComBSTR("l"), var );
VariantClear(&var);
 
V_BSTR(&var) = SysAllocString(L"Washington");
V_VT(&var) = VT_BSTR;
hr = pADs->Put(CComBSTR("st"), var );
VariantClear(&var);
 
// Commit changes to the directory store.
hr = pADs->SetInfo();

if(pADs)
   pADs->Release();

要求

   
最低受支持的客户端 Windows Vista
最低受支持的服务器 Windows Server 2008
目标平台 Windows
标头 iads.h
DLL Activeds.dll

请参阅

IADs

IADs::GetInfo

IADs::GetInfoEx

IADs::P ut

IADs::P utEx