IADs::P utEx 메서드(iads.h)
IADs::P utEx 메서드는 ADSI 특성 캐시의 특성 값을 수정합니다. 예를 들어 여러 값을 허용하는 속성의 경우 기존 값 집합에 추가 값을 추가하거나, 집합의 값을 수정하거나, 집합에서 지정된 값을 제거하거나, 집합에서 값을 삭제할 수 있습니다.
구문
HRESULT PutEx(
[in] long lnControlCode,
[in] BSTR bstrName,
[in] VARIANT vProp
);
매개 변수
[in] lnControlCode
수정 모드를 나타내는 제어 코드: 추가, 바꾸기, 제거 및 삭제. 자세한 내용과 값 목록은 ADS_PROPERTY_OPERATION_ENUM 참조하세요.
[in] bstrName
속성 이름을 지정하는 BSTR 을 포함합니다.
[in] vProp
속성의 새 값 또는 값을 포함하는 VARIANT 배열을 포함합니다. 단일 값 속성은 단일 요소가 있는 배열로 표시됩니다. InControlCode가 ADS_PROPERTY_CLEAR 설정된 경우 vProp에서 지정한 속성의 값은 관련이 없습니다.
반환 값
이 메서드는 표준 반환 값과 다음을 지원합니다.
자세한 내용은 ADSI 오류 코드를 참조하세요.
설명
PutEx 는 일반적으로 다중 값 특성에 대한 값을 설정하는 데 사용됩니다. PutEx를 사용하는 IADs::P ut 메서드와 달리 특성 값을 수정하기 전에 가져올 필요는 없습니다. 그러나 PutEx는 ADSI 속성 캐시에 포함된 특성 값만 변경하므로 디렉터리에 변경 내용을 커밋하려면 각 PutEx 호출 후 IADs::SetInfo를 사용해야 합니다.
PutEx 를 사용하면 ADS_PROPERTY_APPEND 사용하여 다중 값 특성의 기존 값 집합에 값을 추가할 수 있습니다. 다중 값 특성에 값을 업데이트, 추가 또는 삭제하는 경우 배열을 사용해야 합니다.
Active Directory는 다중값 특성에 중복 값을 허용하지 않습니다. PutEx를 호출하여 Active Directory 개체의 다중 값 특성에 중복 값을 추가하면 PutEx 호출이 성공하지만 중복 값은 무시됩니다.
마찬가지로 PutEx 를 사용하여 Active Directory 개체의 다중값 속성에서 하나 이상의 값을 삭제하는 경우 작업이 성공합니다. 즉, 속성에 지정된 값 중 하나 또는 전부가 설정되지 않은 경우에도 오류가 발생하지 않습니다.
예제
다음 코드 예제에서는 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
다음 코드 예제에서는 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();
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows Vista |
지원되는 최소 서버 | Windows Server 2008 |
대상 플랫폼 | Windows |
헤더 | iads.h |
DLL | Activeds.dll |