Criação de usuário com o provedor LDAP ADSI
Com o provedor LDAP ADSI, você só pode criar uma conta de usuário global. As contas locais residem no banco de dados SAM e devem ser criadas usando o provedor WinNT. Para obter mais informações sobre como criar um objeto de usuário com o provedor WinNT, consulte de objeto de usuário WinNT.
Para criar um objeto de usuário
Associe ao contêiner em que o objeto de usuário residirá e obtenha o IADsContainer ou interface de IDirectoryObject para o contêiner.
Use o método IADsContainer.Create ou IDirectoryObject::CreateDSObject para criar o objeto de usuário.
Os atributos mínimos necessários para criar um objeto de usuário dependerão do serviço de diretório usado. Para obter mais informações sobre como criar um usuário do Active Directory, consulte Criando um usuário.
Se a interfaceIADsContainerfor usada, o novo objeto não será realmente criado até que o método IADs.SetInfo seja chamado.
Se a interfaceIDirectoryObjectfor usada, o novo objeto será criado quando o método CreateDSObject for chamado. Os atributos mínimos, incluindo oobjectClass, devem ser especificados na matriz ADS_ATTR_INFO passada para o método CreateDSObject.
Exemplo 1
O exemplo de código a seguir cria uma conta de usuário com os atributos padrão.
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
Exemplo 2
O exemplo de código a seguir cria uma conta de usuário com os atributos padrão. Para fins de brevidade, a verificação de erros é omitida.
#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;
}