Creación de usuarios con el proveedor LDAP adsi
Con el proveedor LDAP ADSI, solo puede crear una cuenta de usuario global. Las cuentas locales residen en la base de datos SAM y deben crearse con el proveedor winNT. Para obtener más información sobre cómo crear un objeto de usuario con el proveedor WinNT, vea Objeto de usuario de WinNT.
Para crear un objeto de usuario
Enlazar al contenedor donde residirá el objeto de usuario y obtener la interfaz IADsContainer o IDirectoryObject para el contenedor.
Use el método IADsContainer.Create o IDirectoryObject::CreateDSObject para crear el objeto de usuario.
Los atributos mínimos necesarios para crear un objeto de usuario dependerán del servicio de directorio usado. Para obtener más información sobre cómo crear un usuario de Active Directory, consulte Creación de un usuario.
Si se usa la interfaz IADsContainer , el nuevo objeto no se crea realmente hasta que se llama al método IADs.SetInfo .
Si se usa la interfaz IDirectoryObject , se crea el nuevo objeto cuando se llama al método CreateDSObject . Los atributos mínimos, incluido objectClass, deben especificarse en la matriz ADS_ATTR_INFO pasada al método CreateDSObject .
Ejemplo 1
En el ejemplo de código siguiente se crea una cuenta de usuario con los atributos predeterminados.
Dim ou As IADs
Dim usr as IADsUser
On Error GoTo Cleanup
Set ou = GetObject("LDAP://OU=Finance,DC=Fabrikam,DC=COM")
Set usr = ou.Create("user", "cn=Jeff Smith")
usr.Put "samAccountName", "jeffsmith"
usr.SetInfo
Cleanup:
If (Err.Number <> 0) Then
MsgBox ("An error has occurred. " & Err.Number)
End If
Set ou = Nothing
Set usr = Nothing
Ejemplo 2
En el ejemplo de código siguiente se crea una cuenta de usuario con los atributos predeterminados. Para mayor brevedad, se omite la comprobación de errores.
#include <activeds.h>
int main()
{
HRESULT hr = CoInitialize(NULL);
IADsContainer *pCont;
IADsUser *pUser;
LPWSTR adsPath = L"LDAP://serv1/CN=Users,dc=Fabrikam,dc=com";
LPWSTR usrPass = NULL;
LPWSTR usrName = NULL;
// Add code to securely get the user name and password or leave
// as NULL to use the current security context.
hr = ADsOpenObject(adsPath,
usrName,
usrPass,
ADS_SECURE_AUTHENTICATION,
IID_IADsContainer,
(void**)&pCont);
IDispatch *pDisp;
hr = pCont->Create(CComBSTR("user"), CComBSTR("cn=Jeff Smith"), &pDisp);
pCont->Release();
hr = pDisp->QueryInterface(IID_IADsUser,(void**)&pUser);
pDisp->Release();
VARIANT var;
VariantInit(&var);
V_BSTR(&var) = L"jeffsmith";
V_VT(&var)=VT_BSTR;
hr = pUser->Put(CComBSTR("samAccountName"), var);
hr = pUser->SetInfo();
VariantClear(&var);
pUser->Release();
CoUninitialize();
return 0;
}