Comment transférer vos photos dans votre Active Directory?

 "Il est bien gentil David avec ses 2 applications VSTO & WPF qui affichent la tête des gens mais comment fait-il pour poster les photos dans son AD?"<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

  Et oui, c'est une question que l'on ma déjà soumise plusieurs fois! En effet, il y a 2 attributs disponibles dans notre Active Directory pour y recevoir une photo: thumbnailPhoto utilisé par les 2 applications que j'ai partagées et jpegPhoto.

  Or, aussi surprenant que cela puisse paraitre, il n'y aucun moyen de remplir ces champs via l'interface d'administration Active Directory Users & Computers. L'unique solution consiste à le faire par un petit bout de code. Allez, comme je suis sympa, je vous propose un exemple de code en VB.NET (pour changer un peu !) :

Dim inFile As System.IO.FileStream

Dim binaryData() As Byte

Dim strFileName As String

Dim strUserName As String

 

'Nom du fichier contenant l'image à importer

strFileName = My.Application.CommandLineArgs(0)

'Nom de l'utilisateur impacté

strUserName = My.Application.CommandLineArgs(1)

 

'On ouvre le fichier

inFile = New System.IO.FileStream(strFileName, System.IO.FileMode.Open, System.IO.FileAccess.Read)

 

Console.WriteLine("File " + strFileName + " opened successfully.")

 

'Récupération des données dans un tableau de bits

ReDim binaryData(inFile.Length)

Dim bytesRead As Long = inFile.Read(binaryData, 0, CInt(inFile.Length))

inFile.Close()

 

'A CHANGER en fonction de votre propre AD

Dim strDN As String = "CN=" + strUserName + ",CN=Users,DC=davrous2k8,DC=com"

Dim strDCName As String = "DCDAVROUS2K8"

 

Console.WriteLine("LDAP path used: " + "LDAP://" & strDCName & "/" & strDN)

 

'On récupère un objet utilisateur

Dim myUser As New System.DirectoryServices.DirectoryEntry("LDAP://" & strDCName & "/" & strDN)

 

'On efface l'image éventuellement déjà présente

myUser.Properties("thumbnailPhoto").Clear()

 

'Et on finit par mettre à jour la propriété clé

myUser.Properties("thumbnailPhoto").Add(binaryData)

myUser.CommitChanges()

Console.WriteLine("Done!")

David