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
Comments
- Anonymous
October 08, 2008
The comment has been removed