Creating inetOrgPerson Objects
To create an inetOrgPerson object, bind to the object that will contain the object, create an inetOrgPerson 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 User Classes.
The following Visual Basic Scripting Edition example uses the GetObject function to bind to an organization object and uses the Create method to create inetOrgPerson objects in that organization.
' Create inetOrgPerson Objects.
Option Explicit
Dim objADAM ' Binding object.
Dim objUser ' inetOrgPerson.
Dim strPath ' Binding path.
Dim strUser ' Selected user.
Dim strUsers ' Array users.
' Construct the binding string.
strPath = "LDAP://localhost:389/O=Fabrikam,C=US"
WScript.Echo "Bind to: " & strPath
On Error Resume Next
' Bind to object.
Set objADAM = GetObject(strPath)
' Output error if bind fails.
If Err.Number <> vbEmpty Then
WScript.Echo "Error: Bind failed."
WScript.Quit
Else
WScript.Echo "Success: Bind succeeded."
End If
' Specify Users.
strUsers = Array("CN=inetuser1", "CN=inetuser2", "CN=inetuser3")
' Loop through and create users.
For Each strUser in strUsers
' Create User.
WScript.Echo "Create: " & strUser
Set objUser = objADAM.Create("inetOrgPerson", strUser)
objUser.SetInfo
' Output success or error.
If Err.Number <> vbEmpty Then
WScript.Echo "Error: Create failed with error #" _
& Hex(Err.Number) & ", " _
& Err.Description & "."
Else
WScript.Echo "Success: User created."
WScript.Echo " Name: " & objUser.Name
End If
Set objUser = Nothing
Next
The following Visual Basic .NET example uses the DirectoryEntry constructor to bind to an organization object and uses the Add method to create inetOrgPerson objects in that organization.
Imports System
Imports System.DirectoryServices
Namespace ADAM_Examples
Class CreateInetOrgUsers
'/ <summary>
'/ Create inetOrgPerson Objects.
'/ </summary>
<STAThread()> Shared Sub Main()
Dim objADAM As DirectoryEntry ' Binding object.
Dim objUser As DirectoryEntry ' inetOrgPerson 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
' Specify users.
Dim strUsers As String() = _
{"CN=inetuser1", "CN=inetuser2", "CN=inetuser3"}
' Loop through and create users.
Dim strUser As String
For Each strUser In strUsers
Console.WriteLine("Create: {0}", strUser)
' Create user.
Try
objUser = objADAM.Children.Add(strUser, "inetOrgPerson")
objUser.CommitChanges()
Catch e As Exception
Console.WriteLine("Error: Create failed.")
Console.WriteLine(" {0}", e.Message)
Return
End Try
' Output user attribute.
Console.WriteLine("Success: Create succeeded.")
Console.WriteLine("Name: {0}", objUser.Name)
Next strUser
Return
End Sub 'Main
End Class 'CreateInetOrgUsers
End Namespace 'ADAM_Examples
The following C# example uses the DirectoryEntry constructor to bind to an organization object and uses the Add method to create inetOrgPerson objects in that organization.
using System;
using System.DirectoryServices;
namespace ADAM_Examples
{
class CreateInetOrgUsers
{
/// <summary>
/// Create inetOrgPerson Objects.
/// </summary>
[STAThread]
static void Main()
{
DirectoryEntry objADAM; // Binding object.
DirectoryEntry objUser; // inetOrgPerson object.
string strPath; // Binding path.
// Construct the binding string.
strPath = "LDAP://localhost:389/O=Fabrikam,C=US";
Console.WriteLine("Bind to: {0}", strPath);
// Get the AD LDS object.
try
{
objADAM = new DirectoryEntry(strPath);
objADAM.RefreshCache();
}
catch (Exception e)
{
Console.WriteLine("Error: Bind failed.");
Console.WriteLine(" {0}", e.Message);
return;
}
// Specify users.
string[] strUsers = {"CN=inetuser1",
"CN=inetuser2", "CN=inetuser3"};
// Loop through and create users.
foreach (string strUser in strUsers)
{
Console.WriteLine("Create: {0}", strUser);
// Create user.
try
{
objUser = objADAM.Children.Add(strUser,
"inetOrgPerson");
objUser.CommitChanges();
}
catch (Exception e)
{
Console.WriteLine("Error: Create failed.");
Console.WriteLine(" {0}", e.Message);
return;
}
// Output user attribute.
Console.WriteLine("Success: Create succeeded.");
Console.WriteLine("Name: {0}", objUser.Name);
}
return;
}
}
}
The following C++ example in shows how to add a user to an application partition directory using Active Directory Service Interfaces (ADSI). The example uses the IADsContainer::Create and the IADs::SetInfo methods. For more information about adding objects using ADSI, see Creating and Deleting Objects.
The example assumes an application partition called O=fabrikam,c=US and has set up your environment for ADSI development. For more information, see Setting Up Visual C++ 6.0 for ADSI Development.
#include "stdafx.h"
#include "activeds.h"
#include "atlbase.h"
int _tmain()
{
HRESULT hr;
IADsContainer *pCont;
// You must initialize COM before calling any ADSI functions or interfaces.
CoInitialize(NULL);
CComBSTR sbrstADsPath = "LDAP://localhost:389/O=fabrikam,c=US";
// Bind to the container.
hr = ADsGetObject(sbrstADsPath, IID_IADsContainer, (void**) &pCont; );
if ( SUCCEEDED(hr) )
{
//----------------------------
// Creating a user
//-----------------------------
IDispatch *pDisp=NULL;
IADs *pUser;
hr = pCont->Create( CComBSTR("user"), CComBSTR("CN=jeffsmith"), &pDisp; );
if ( SUCCEEDED(hr) )
{
hr = pDisp->QueryInterface( IID_IADs, (void**) &pUser; );
if ( SUCCEEDED(hr) )
{
// Commit creation to the directory.
hr = pUser->SetInfo();
if ( !SUCCEEDED(hr) )
{
return 0;
}
// Release the object.
pUser->Release();
}
pDisp->Release();
}
pCont->Release();
}
CoUninitialize();
}