Visual Basic Code Example: Creating an Active Directory Domain Services Distribution List
Applies To: Windows 10, Windows 7, Windows 8, Windows 8.1, Windows Server 2008, Windows Server 2008 R2, Windows Server 2012, Windows Server 2012 R2, Windows Server Technical Preview, Windows Vista
This example provides a Private Sub procedure that creates an Active Directory Domain Services (AD DS) distribution list with the name supplied by the caller in the local domain.
For information on how distribution lists are used, see Distribution Lists.
For an example of how to send messages to distribution lists, see Visual Basic Code Example: Sending Messages Using Distribution Lists.
This example uses the GetObject method to obtain an ADSI object that represents the root of the directory data tree on a directory server in the local domain (rootDSE). RootDSE is a unique entry that exists on every directory server. It enables you to obtain information about the server. In this example, it is used to obtain the distinguished name (DN) of the first domain (the root domain) in the forest that contains the domain to which the directory server belongs. This name is then bound to an ADSI container object, in which the distribution group object is created.
Distribution Lists are AD DS objects that can be created only in the Computers and Domain Controllers containers of domain controllers. This example can be run only on a domain controller by a user having domain administrative permissions.
To run this procedure, you must include the Active DS Type Library as a resource in your Visual Basic® project.
To create a distribution list
Declare the variables and objects needed.
Call GetObject to obtain an ADSI object for rootDSE.
Call IADs.Get to retrieve the domain name from the ADSI object representing rootDSE.
Bind the domain name to an ADSI container object that will serve as the parent ADSI container for the distribution list.
Call IADsContainer.Create to create a distribution list (DL) with the name supplied by the caller. The distribution list is created in the form of an AD DS distribution group in the parent ADSI container.
Set the group type of the distribution list to global distribution group.
The following code example requires MSMQ 3.0.
Private Sub CreateDL( _ strDLName As String _ ) Dim iadsRootDse As IADs Dim strRootDomain As String Dim iadscontDS As IADsContainer Dim iadsgroupDist As IADsGroup Dim iGroupType As Integer ' Get an ADSI object for rootDSE. On Error GoTo ErrorHandler Set iadsRootDse = GetObject("LDAP://rootDSE") ' Retrieve the domain name from the object representing rootDSE. strRootDomain = iadsRootDse.Get("RootDomainNamingContext") ' Bind the domain name to the parent ADSI container. Set iadscontDS = GetObject("LDAP://" + strRootDomain) ' Create a distribution list (DL) in the form of an AD DS ' distribution group in the parent ADSI container. Set iadsgroupDist = iadscontDS.Create("group", "CN=" + strDLName) 'Set the group type of the distribution list to global distribution group. iGroupType = ADS_GROUP_TYPE_GLOBAL_GROUP iadsgroupDist.Put "sAMAccountName", strDLName iadsgroupDist.Put "groupType", iGroupType iadsgroupDist.SetInfo Exit Sub ErrorHandler: MsgBox "Error " + Hex(Err.Number) + " returned." _ + Chr(13) + Err.Description End Sub