IADs::SetInfo 方法 (iads.h)
IADs::SetInfo 方法将 ADSI 对象的缓存属性值保存到基础目录存储。
语法
HRESULT SetInfo();
返回值
此方法支持标准返回值,包括成功操作S_OK。 有关详细信息,请参阅 ADSI 错误代码。
注解
请务必强调 IADs::P ut 和 IADs::SetInfo 方法之间的差异。 前者设置 (或修改) 属性缓存中给定属性的值,而后者将属性缓存中的更改传播到基础目录存储中。 因此,如果在调用 IADs::SetInfo 之前调用 IADs::GetInfo (或 IADs::GetInfoEx) ,则 IADs::P ut 所做的任何属性值更改都将丢失。
由于 IADs::SetInfo 跨网络发送数据,因此请尽量减少此方法的使用。 这可以减少客户端到服务器的行程数。 例如,应在一批中将缓存中对属性的所有或大部分更改提交到永久性存储。
此准则仅适用于 IADs::SetInfo 与 IADs::P ut 方法的关系,该方法不同于 IADs::P utEx 方法的关系。
下面的代码示例演示 了 IADs::P ut 和 IADs::SetInfo 之间的建议关系。
Dim obj as IADs
obj.Put(prop1,val1)
obj.Put(prop2.val2)
obj.Put(prop3.val3)
obj.SetInfo
以下代码示例演示了 IADs::P ut 和 IADs::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 |