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

另请参阅

IAD

IADs::GetInfo

IADs::GetInfoEx

IADs::P ut

IADs::P utEx