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 Objeto de usuário WinNT.
Para criar um objeto de usuário
Vincule-se ao contêiner onde o objeto de usuário residirá e obtenha a interface IADsContainer ou 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 interface IADsContainer for usada, o novo objeto não será realmente criado até que o método IADs.SetInfo seja chamado.
Se a interface IDirectoryObject for usada, o novo objeto será criado quando o método CreateDSObject for chamado. Os atributos mínimos, incluindo o objectClass, 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. Por 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;
}