Поделиться через


Добавление вспомогательного класса в экземпляр объекта

В следующих примерах кода показано, как использовать ADSI и LDAP для динамического добавления вспомогательного класса в существующий экземпляр объекта. В примерах предполагается, что вспомогательный класс с именем транспортного средства определен в схеме Active Directory и что класс транспортного средства имеет атрибут vin.

При динамическом добавлении вспомогательного класса в экземпляр объекта необходимо одновременно указать значения для любых обязательных атрибутов mustHave в классе. В следующих примерах показано, как это сделать с атрибутом "vin", который, как предполагается, является обязательным.

Следующий пример C++ привязывается к объекту и использует IADs.PutEx для добавления вспомогательного класса в список классов в свойстве objectClass объекта. Затем в примере используется IADs.Put , чтобы задать значение атрибута vin . Наконец, он вызывает IADs.SetInfo для фиксации изменений в каталоге.

LPWSTR pszAuxClass[]={L"vehicle"};
LPWSTR pszVIN[]={L"df897dsfsa-0"};
VARIANT var;

VariantInit(&var);

ADsOpenObject(L"cn=johnd,cn=users,dc=fabrikam,dc=com", 
    NULL, 
    NULL, 
    ADS_SECURE_AUTHENTICATION, 
    IID_IADs,  
    (VOID**)&pIADs);

ADsBuildVarArrayStr(pszAuxClass, 1, &var);
pIADs->PutEx(ADS_PROPERTY_APPEND, CComBSTR("objectClass"), var);
ADsBuildVarArrayStr( pszVIN, 1, &var);
pIADs->Put(CComBSTR("vin"), var);
pIADs->SetInfo();

if(pIADs)
    pIADs->Release();

VariantClear(&var);