User Management using ADSI





4.00/5 (6 votes)
Mar 24, 2001

154542

1308
This article demonstrates user management using Active Directory Services
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 }