Creating Contact Objects
To create a Contact object, bind to the object that will contain the object, create a Contact object, set its properties and save the object to the directory store.
The following code example assumes that the schema of the AD LDS instance has been extended by Adding Contact Classes.
The following Visual Basic Scripting Edition code example defines a function that uses the Create method to create Contact objects in a selected organization object.
' Create Contacts.
Option Explicit
Dim lngErrNumber ' Error number.
Dim objADAM ' Binding object.
Dim strPath ' Binding path.
' Construct the binding string.
strPath = "LDAP://localhost:389/O=Fabrikam,C=US"
Function lngCreateContact(objADAMPath, _
strCN, _
strSN, _
strTitle, _
strTelephoneNumber, _
strGivenName, _
strMail, _
strManager)
Dim objNewContact ' New contact to create.
On Error Resume Next
' Create new contact.
Set objNewContact = objADAMPath.Create("Contact", "CN=" & strCN)
' Set attributes.
If strSN <> "" And strSN <> vbNullString Then
objNewContact.Put "sn", strSN
End If
If strTitle <> "" And strTitle <> vbNullString Then
objNewContact.Put "title", strTitle
End If
If strTelephoneNumber <> "" And _
strTelephoneNumber <> vbNullString _
Then
objNewContact.Put "telephoneNumber", strTelephoneNumber
End If
If strGivenName <> "" And strGivenName <> vbNullString Then
objNewContact.Put "givenName", strGivenName
End If
If strMail <> "" And strMail <> vbNullString Then
objNewContact.Put "mail", strMail
End If
If strManager <> "" And strManager <> vbNullString Then
objNewContact.Put "manager", strManager
End If
objNewContact.SetInfo
' Return success or error.
lngCreateContact = Err.Number
Set objNewContact = Nothing
On Error Goto 0
End Function
WScript.Echo "Bind to: " & strPath
On Error Resume Next
' Bind to the object.
Set objADAM = GetObject(strPath)
' If bind fails, output error.
If Err.Number <> vbEmpty Then
WScript.Echo "Error: Bind failed."
WScript.Quit
Else
WScript.Echo "Success: Bind succeeded."
End If
On Error Goto 0
' Create first Contact.
' Manager not specified.
lngErrNumber = lngCreateContact(objADAM, _
"Jane Clayton", _
"Clayton", _
"Office Manager", _
"+1(206)555-0101", _
"Jane", _
"janeclayton@fabrikam.us", _
"")
' Output success or error.
If lngErrNumber <> vbEmpty Then
WScript.Echo "Error: Create failed with error# " _
& Hex(lngErrNumber) & "."
Else
WScript.Echo "Success: User created."
End If
' Create second Contact.
' Change "CN=Jane Clayton,O=Fabrikam,C=US" to appropriate manager.
lngErrNumber = lngCreateContact(objADAM, _
"Jeff Smith", _
"Smith", _
"Office Assistant", _
"+1(206)555-0111", _
"Jeff", _
"jeffsmith@fabrikam.us", _
"CN=Jane Clayton,O=Fabrikam,C=US")
' Output success or error.
If lngErrNumber <> vbEmpty Then
WScript.Echo "Error: Create failed with error# " _
& Hex(lngErrNumber) & "."
Else
WScript.Echo "Success: User created."
End If
The following Visual Basic .NET code example defines a function that uses the Add method to create Contact objects in a selected organization object.
Imports System
Imports System.DirectoryServices
Namespace ADAM_Examples
Class CreateContacts
'/ <summary>
'/ Create a single Contact.
'/ </summary>
Private Shared Function CreateContact( _
objADAMPath As DirectoryEntry, _
strCN As String, _
strSN As String, _
strTitle As String, _
strTelephoneNumber As String, _
strGivenName As String, _
strMail As String, _
strManager As String) As Boolean
Dim objNewContact As DirectoryEntry ' New Contact to create.
' Create new contact and set attributes.
Try
objNewContact = objADAMPath.Children.Add(strCN, "Contact")
If strSN <> "" Or strSN <> String.Empty Then
objNewContact.Properties("sn").Add(strSN)
End If
If strTitle <> "" Or strTitle <> String.Empty Then
objNewContact.Properties("title").Add(strTitle)
End If
If strTelephoneNumber <> "" Or _
strTelephoneNumber <> String.Empty Then
objNewContact.Properties("telephoneNumber").Add( _
strTelephoneNumber)
End If
If strGivenName <> "" Or strGivenName <> String.Empty Then
objNewContact.Properties("givenName").Add(strGivenName)
End If
If strMail <> "" Or strMail <> String.Empty Then
objNewContact.Properties("mail").Add(strMail)
End If
If strManager <> "" Or strManager <> String.Empty Then
objNewContact.Properties("manager").Add(strManager)
End If
objNewContact.CommitChanges()
Catch e As Exception
Console.WriteLine("Error: {0}", e.ToString())
Return False
End Try
Console.WriteLine("Success: Contact created.")
Return True
End Function 'CreateContact
'/ <summary>
'/ Create Contacts.
'/ </summary>
<STAThread()> Shared Sub Main()
Dim objADAM As DirectoryEntry ' Binding object.
Dim strPath As String ' Binding path.
' Construct the binding string.
strPath = "LDAP://localhost:389/O=Fabrikam,C=US"
Console.WriteLine("Bind to: {0}", strPath)
' Get AD LDS object.
Try
objADAM = New DirectoryEntry(strPath)
objADAM.RefreshCache()
Catch e As Exception
Console.WriteLine("Error: Bind failed.")
Console.WriteLine(" {0}", e.Message)
Return
End Try
' Create first Contact.
' Manager not specified.
If Not CreateContacts.CreateContact( _
objADAM, _
"CN=Jane Clayton", _
"Clayton", _
"Office Manager", _
"+1(206)555-0101", _
"Jane", _
"janeclayton@fabrikam.us", _
"") _
Then
Return
End If
' Create second Contact.
' Change "CN=Jane Clayton,O=Fabrikam,C=US"
' to appropriate manager.
If Not CreateContacts.CreateContact( _
objADAM, _
"CN=Jeff Smith", _
"Smith", _
"Office Assistant", _
"+1(206)555-0111", _
"Jeff", _
"jeffsmith@fabrikam.us", _
"CN=Jane Clayton,O=Fabrikam,C=US") _
Then
Return
End If
Return
End Sub 'Main
End Class 'CreateContacts
End Namespace 'ADAM_Examples
The following C# code example defines a function that uses the Add method to create Contact objects in a selected organization object.
using System;
using System.DirectoryServices;
namespace ADAM_Examples
{
class CreateContacts
{
/// <summary>
/// Create a single Contact.
/// </summary>
private static bool CreateContact(
DirectoryEntry objADAMPath,
string strCN,
string strSN,
string strTitle,
string strTelephoneNumber,
string strGivenName,
string strMail,
string strManager)
{
DirectoryEntry objNewContact; // New Contact to create.
// Create new contact and set attributes.
try
{
objNewContact = objADAMPath.Children.Add(
strCN, "Contact");
if (strSN != "" || strSN != String.Empty)
objNewContact.Properties["sn"].Add(strSN);
if (strTitle != "" || strTitle != String.Empty)
objNewContact.Properties["title"].Add(strTitle);
if (strTelephoneNumber != "" ||
strTelephoneNumber != String.Empty)
objNewContact.Properties[
"telephoneNumber"].Add(strTelephoneNumber);
if (strGivenName != "" || strGivenName != String.Empty)
objNewContact.Properties[
"givenName"].Add(strGivenName);
if (strMail != "" || strMail != String.Empty)
objNewContact.Properties["mail"].Add(strMail);
if (strManager != "" || strManager != String.Empty)
objNewContact.Properties["manager"].Add(strManager);
objNewContact.CommitChanges();
}
catch (Exception e)
{
Console.WriteLine("Error: {0}", e.ToString());
return false;
}
Console.WriteLine("Success: Contact created.");
return true;
}
/// <summary>
/// Create Contacts.
/// </summary>
[STAThread]
static void Main()
{
DirectoryEntry objADAM; // Binding object.
string strPath; // Binding path.
// Construct the binding string.
strPath = "LDAP://localhost:389/O=Fabrikam,C=US";
Console.WriteLine("Bind to: {0}", strPath);
// Get AD LDS object.
try
{
objADAM = new DirectoryEntry(strPath);
objADAM.RefreshCache();
}
catch (Exception e)
{
Console.WriteLine("Error: Bind failed.");
Console.WriteLine(" {0}", e.Message);
return;
}
// Create first Contact.
// Manager not specified.
if (!CreateContacts.CreateContact(
objADAM,
"CN=Jane Clayton",
"Clayton",
"Office Manager",
"+1(206)555-0101",
"Jane",
"janeclayton@fabrikam.us",
""))
{
return;
}
// Create second Contact.
// Change "CN=Jane Clayton,O=Fabrikam,C=US"
// to appropriate manager.
if (!CreateContacts.CreateContact(
objADAM,
"CN=Jeff Smith",
"Smith",
"Office Assistant",
"+1(206)555-0111",
"Jeff",
"jeffsmith@fabrikam.us",
"CN=Jane Clayton,O=Fabrikam,C=US"))
{
return;
}
return;
}
}
}