Click here to Skip to main content
15,860,972 members
Articles / Desktop Programming / ATL
Article

User Management using ADSI

Rate me:
Please Sign up or sign in to vote.
4.00/5 (6 votes)
23 Mar 2001 151.9K   1.3K   24   27
This article demonstrates user management using Active Directory Services

Sample Image - adsiuserdmo.gif

Introduction

The listing demonstrates how to use Active Directory Service to manage the users on WinNT and Windows 2000.

IADsContainer interface lets you crawl through the active directory. To manage users, you need to get ADS object with path WinNT://DomianName/MachineName. IADsWinNTSystemInfo interface provides this information. Once we have a container, we enumerate through the container and if the object supports IADsUser interface, we add it as the user in the ListView. IADsUser then lets you manage properties for individual users.

//Get the Information about system name and domain name

IADsWinNTSystemInfo *pNTsys;
HRESULT hr = CoCreateInstance(CLSID_WinNTSystemInfo, 
   NULL,CLSCTX_INPROC_SERVER, 
   IID_IADsWinNTSystemInfo,  (void**)&pNTsys);
pNTsys->AddRef();
BSTR bstrCompName;
pNTsys->get_ComputerName(&bstrCompName);
CString cscompName=bstrCompName;
SysFreeString(bstrCompName);
BSTR bstrDomainName;
pNTsys->get_DomainName(&bstrDomainName);
CString CSDomainName=bstrDomainName;
SysFreeString(bstrDomainName);
pNTsys->Release();

//Form ADSPath
ADSPath.Format("WinNT://%s/%s",CSDomainName,cscompName);

//Get the container object
hr=ADsGetObject(ADSPath.AllocSysString(),IID_IADsContainer,(void **)&pUsers);

//Now Enumerate through the container
IEnumVARIANTPtr pEnum; 
ADsBuildEnumerator (pUsers,&pEnum);
int cnt=0;
while(1)
{
    _variant_t vChild;
    hr=ADsEnumerateNext (pEnum,1,&vChild,NULL);
    //Iterate as long as you get S_OK 
    if(hr!=S_OK)
        break;
    hr=vChild.pdispVal->QueryInterface (IID_IADsUser,(void **)&pChild);
    if(hr!=S_OK)
        continue;
    else
        //This object is user
}

License

This article has no explicit license attached to it but may contain usage terms in the article text or the download files themselves. If in doubt please contact the author via the discussion board below.

A list of licenses authors might use can be found here


Written By
United States United States
This member has not yet provided a Biography. Assume it's interesting and varied, and probably something to do with programming.

Comments and Discussions

 
QuestionWhich Win32 API is used ? Pin
Abhinav agrawal2-Feb-06 1:21
Abhinav agrawal2-Feb-06 1:21 
GeneralPassword Pin
mendezhe5-Aug-05 9:46
mendezhe5-Aug-05 9:46 
GeneralRe: Password Pin
Le Thanh Cong13-Apr-06 23:38
Le Thanh Cong13-Apr-06 23:38 
GeneralI still have unresolved externals Pin
zim32726-Aug-04 5:07
zim32726-Aug-04 5:07 
GeneralRe: I still have unresolved externals Pin
zim32726-Aug-04 9:47
zim32726-Aug-04 9:47 
GeneralRe: I still have unresolved externals Pin
kelprinc29-Jan-06 22:57
kelprinc29-Jan-06 22:57 
Generalcreating a new Group policy thru Code Pin
chettu20-Jun-04 20:46
chettu20-Jun-04 20:46 
GeneralRe: creating a new Group policy thru Code Pin
manjarijain14-May-07 4:43
manjarijain14-May-07 4:43 
GeneralRe: creating a new Group policy thru Code Pin
tankSanju28-May-07 21:33
tankSanju28-May-07 21:33 
GeneralGetting Unresolved External yet have VS.Net 2003 Pin
sarahl26-Apr-04 4:32
sarahl26-Apr-04 4:32 
GeneralADsGetObject showing memory leak Pin
Anonymous25-Feb-04 19:15
Anonymous25-Feb-04 19:15 
Questionget_EmailAddress? Pin
DuneAgent14-Aug-03 1:22
DuneAgent14-Aug-03 1:22 
AnswerRe: get_EmailAddress? Pin
iknowindigo27-Sep-06 11:58
iknowindigo27-Sep-06 11:58 
GeneralRe: get_EmailAddress? Pin
DuneAgent27-Sep-06 12:33
DuneAgent27-Sep-06 12:33 
GeneralRe: get_EmailAddress? Pin
iknowindigo28-Sep-06 9:39
iknowindigo28-Sep-06 9:39 
GeneralRe: get_EmailAddress? Pin
DuneAgent29-Sep-06 15:18
DuneAgent29-Sep-06 15:18 
GeneralUndeclared Identifier in IADsWinNTSystemInfo Pin
a_sangee19-Mar-02 22:47
a_sangee19-Mar-02 22:47 
GeneralRe: Undeclared Identifier in IADsWinNTSystemInfo Pin
fenil jacob20-Feb-04 1:52
fenil jacob20-Feb-04 1:52 
have u got any solution
GeneralRe: Undeclared Identifier in IADsWinNTSystemInfo Pin
iknowindigo27-Sep-06 12:00
iknowindigo27-Sep-06 12:00 
GeneralRe: Undeclared Identifier in IADsWinNTSystemInfo Pin
krzysio_3133718-Dec-06 10:37
krzysio_3133718-Dec-06 10:37 
GeneralIADS.h Pin
Amjad W. Hawash24-Nov-01 23:03
Amjad W. Hawash24-Nov-01 23:03 
GeneralRe: IADS.h Pin
Digital Spirits14-Nov-02 23:53
Digital Spirits14-Nov-02 23:53 
QuestionNice Example, but? Pin
Ollie18-Jun-01 5:33
Ollie18-Jun-01 5:33 
AnswerRe: Nice Example, but? Pin
24-Sep-01 22:24
suss24-Sep-01 22:24 
GeneralRe: Nice Example, but? Pin
24-Sep-01 22:26
suss24-Sep-01 22:26 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.