Método IADs::P utEx (iads.h)
El método IADs::P utEx modifica los valores de un atributo en la caché de atributos ADSI. Por ejemplo, para las propiedades que permiten varios valores, puede anexar valores adicionales a un conjunto de valores existente, modificar los valores del conjunto, quitar valores especificados del conjunto o eliminar valores del conjunto.
Sintaxis
HRESULT PutEx(
[in] long lnControlCode,
[in] BSTR bstrName,
[in] VARIANT vProp
);
Parámetros
[in] lnControlCode
Código de control que indica el modo de modificación: Anexar, Reemplazar, Quitar y Eliminar. Para obtener más información y una lista de valores, vea ADS_PROPERTY_OPERATION_ENUM.
[in] bstrName
Contiene un BSTR que especifica el nombre de la propiedad.
[in] vProp
Contiene una matriz VARIANT que contiene el nuevo valor o los valores de la propiedad . Una propiedad con un solo valor se representa como una matriz con un solo elemento. Si InControlCode se establece en ADS_PROPERTY_CLEAR, el valor de la propiedad especificada por vProp es irrelevante.
Valor devuelto
Este método admite valores devueltos estándar, así como lo siguiente.
Para obtener más información, consulta Códigos de error adsi.
Comentarios
PutEx se usa normalmente para establecer valores en atributos de varios valores. A diferencia del método IADs::P ut , con PutEx, no es necesario obtener los valores de atributo antes de modificarlos. Sin embargo, dado que PutEx solo realiza cambios en los valores de atributos contenidos en la caché de propiedades ADSI, debe usar IADs::SetInfo después de cada llamada PutEx para confirmar los cambios en el directorio.
PutEx permite anexar valores a un conjunto de valores existente en un atributo de varios valores mediante ADS_PROPERTY_APPEND. Al actualizar, anexar o eliminar valores a un atributo de varios valores, debe usar una matriz.
Active Directory no acepta valores duplicados en un atributo multivalor. Si llama a PutEx para anexar un valor duplicado a un atributo multivalor de un objeto de Active Directory, la llamada PutEx se realiza correctamente, pero se omite el valor duplicado.
Del mismo modo, si usa PutEx para eliminar uno o varios valores de una propiedad multivalor de un objeto de Active Directory, la operación se realiza correctamente, es decir, no producirá un error, incluso si alguno o todos los valores especificados no están establecidos en la propiedad .
Ejemplos
En el ejemplo de código siguiente se muestra cómo usar el método IADs.PutEx .
Dim x As IADs
On Error GoTo Cleanup
Set x = GetObject("LDAP://CN=JeffSmith,CN=Users,DC=Fabrikam,DC=com")
'----------------------------------------------------------
' Assume the otherHomePhone has the values
' 425-707-9790, 425-707-9791
'----------------------------------------------------------
' Adding a value
x.PutEx ADS_PROPERTY_APPEND, "otherhomePhone", Array("425-707-9792")
x.SetInfo ' Now the values are 425-707-9790,425-707-9791,425-707-9792.
deleting two values
x.PutEx ADS_PROPERTY_DELETE, "otherHomePhone", Array("425-707-9790", "425-707-9791")
x.SetInfo ' Now the values are 425-707-9792.
' Changing the remaining value
x.PutEx ADS_PROPERTY_UPDATE, "otherHomePhone", Array("425-707-9793", "425-707-9794")
x.SetInfo ' Now the values are 425-707-9793,425-707-9794.
' Deleting the value
x.PutEx ADS_PROPERTY_CLEAR, "otherHomePhone", vbNullString
x.SetInfo ' Now the property has no value.
Cleanup:
If(Err.Number<>0) Then
MsgBox("An error has occurred. " & Err.Number)
End If
Set x = Nothing
En el ejemplo de código siguiente se muestra cómo usar el método IADs::P utEx .
HRESULT hr;
IADs *pADs=NULL;
LPWSTR pszADsPath = L"LDAP://CN=JeffSmith,CN=Users,DC=Fabrikam,DC=com";
CoInitialize(NULL);
hr = ADsGetObject(pszADsPath, IID_IADs, (void**) &pADs);
if(SUCCEEDED(hr))
{
VARIANT var;
VariantInit(&var);
LPWSTR pszPhones[] = { L"425-707-9790", L"425-707-9791" };
DWORD dwNumber = sizeof(pszPhones)/sizeof(LPWSTR);
hr = ADsBuildVarArrayStr(pszPhones, dwNumber, &var);
hr = pADs->Put(CComBSTR("otherHomePhone"), var);
VariantClear(&var);
hr = pADs->SetInfo(); // The phone list is now 425-707-9790, 425-707-9791.
// Append another number to the list.
LPWSTR pszAddPhones[]={L"425-707-9792"};
hr = ADsBuildVarArrayStr(pszAddPhones, 1, &var);
hr = pADs->PutEx(ADS_PROPERTY_APPEND, CComBSTR("otherHomePhone"), var);
hr = pADs->SetInfo(); // The list becomes
// 425-707-9790, 425-707-9791, 425-707-9792.
VariantClear(&var);
hr = ADsBuildVarArrayStr(pszPhones, dwNumber, &var);
hr = pADs->PutEx(ADS_PROPERTY_DELETE, CComBSTR("otherHomePhone"), var);
hr = pADs->SetInfo(); // The list becomes 425-707-9792.
pszPhones[0] = L"425-707-9793";
pszPhones[1] = L"425-707-9794";
hr = ADsBuildVarArrayStr(pszPhones, dwNumber, &var);
hr = pADs->PutEx(ADS_PROPERTY_UPDATE, CComBSTR("otherHomePhone"), var);
hr = pADs->SetInfo(); // The list becomes 425-707-9793, 425-707-9794.
VariantClear(&var);
V_VT(&var)=VT_NULL;
hr = pADs->PutEx(ADS_PROPERTY_CLEAR, CComBSTR("otherHomePhone"), var);
hr = pADs->SetInfo(); // The list is empty.
VariantClear(&var);
pADs->Release();
}
hr = CoUninitialize();
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows Vista |
Servidor mínimo compatible | Windows Server 2008 |
Plataforma de destino | Windows |
Encabezado | iads.h |
Archivo DLL | Activeds.dll |