How To Find All ADSI Providers on a System

This article was previously published under Q233023
This article has been archived. It is offered "as is" and will no longer be updated.
SUMMARY
Microsoft Active Directory Service Interfaces (ADSI) is built on a provider model, where clients interact with ADSI interfaces to perform directory manipulation, while providers implement the mapping between the directory and ADSI interfaces.

This article shows you how to find and list all ADSI providers on a system.
MORE INFORMATION
This can be accomplished by enumerating ADs namespace members with the following code for both Microsoft Visual C++ and Microsoft Visual Basic.

Visual C++

Using Visual C++ paste the following code into a Microsoft C++ Source File:
#include <activeds.h>#include <stdio.h>// link with activeds.lib and adsiid.libvoid main(){		IEnumVARIANT   *pEnum;	IADsContainer  *pCont;	IADs           *pADs;	IDispatch      *pDisp;	VARIANT        var;	BSTR           bstr;	ULONG          lFetch;	HRESULT        hr;	// Skipping error checking for simplicity	CoInitialize(NULL);	// Bind to ADs namespace	hr = ADsGetObject(L"ADs:",IID_IADsContainer, (void**) &pCont);   	//Create an enumerator object in the container.	hr=ADsBuildEnumerator(pCont, &pEnum);		// Now enumerate through all providers 	while(hr == S_OK)	{		hr = ADsEnumerateNext(pEnum, 1, &var, &lFetch);		if (lFetch == 1)		{			pDisp = V_DISPATCH(&var);			pDisp->QueryInterface(IID_IADs, (void**)&pADs);			pDisp->Release();			pADs->get_Name(&bstr);			printf("%S\n",(LPWSTR)bstr);			pADs->Release();			SysFreeString(bstr);		}	}    //Release the enumerator.    if (pEnum != NULL)	{        ADsFreeEnumerator(pEnum);    }}				

Visual Basic

First make a reference to the "Active DS Type Library" by selecting References from the Visual Basic Tools menu. Then paste the following code into a Visual Basic standard module:
Dim prov As IADsNamespacesDim member As IADsSet prov = GetObject("ADs:")For Each member In prov   Debug.Print member.NameNext				
REFERENCES
For additional information about ADSI, please visit:
Properties

Article ID: 233023 - Last Review: 01/10/2015 12:01:34 - Revision: 2.3

Microsoft Active Directory Service Interfaces 2.0, Microsoft Active Directory Service Interfaces 2.5

  • kbnosurvey kbarchive kbhowto KB233023
Feedback