[Mono-list] DirectoryServices class

Arnaud Bienvenu arnaud.bienvenu@makina-corpus.org
Fri, 29 Oct 2004 13:16:10 +0200

This is a multi-part message in MIME format.
Content-Type: text/plain; charset=ISO-8859-1; format=flowed
Content-Transfer-Encoding: 8bit

Nigel Benns a écrit :
> I've had quite a bit of success working with some test programs and
> OpenLdap, but the only thing I cannot do is write to the directory store.
> DirectoryEntry.CommitChanges() runs and exits ok, but doesn't seem to
> really do anything. Then next time I run it, or read the directory in GQ
> the entry is still exactly the same.

CommitChanges() works fine for me from mono-1.0.0 to mono-1.1.1, and I
can write to OpenLDAP (2.0 and 2.1). Are you sure there is no exception
? Maybe your binding is wrong, or you do not respect the LDAP schema...

Attached is an example code of mine that creates a user entry. You could
also send me your code so I can test it.

> Right now I'm using Mono-1.0 with Linux Mandrake 10.1 (actually Cooker,
> I'm going to redo my Laptop with 10.1 PowerPack now that its out)

I use Mandrake 10.0 and Debian Sarge.

Arnaud Bienvenu
Makina Corpus

Content-Type: text/x-csharp;
Content-Transfer-Encoding: 7bit
Content-Disposition: inline;

using System;
using System.DirectoryServices;

public class Client
  public static void Main()
      DirectoryEntry DirEntry = new DirectoryEntry("LDAP://ldap.makina-corpus.org/ou=People,dc=mcjam,dc=org", "cn=admin,dc=makinacorpus,dc=org", "*********");
      DirectoryEntries people = DirEntry.Children;

      DirectoryEntry newentry = people.Add("uid=essai", "top");

      newentry.Properties["userid"].Value = "essai";
      newentry.Properties["cn"].Value = "Ceci est un essai";
      newentry.Properties["uidNumber"].Value = "65534";
      newentry.Properties["gidNumber"].Value = "65534";
      newentry.Properties["homeDirectory"].Value = "/home/users/essai";
      newentry.Properties["sn"].Value = "Essai";
    catch (Exception ex)
      Console.WriteLine("Exception : " + ex.Message);