Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

ajout d'un champs dans les proprietes utilisateur

4 réponses
Avatar
tseu
Bonjour à tous.

Je voudrais étendre la MMC AD Users & Computers avec des champs
personnalisés (qui ont été ajoutés au schéma), en fait j'aurais juste besoin
de rajouter un champs dans les proprietes utilisateurs. On m'a dit que
c'etait possible via un script VB. Auriez-vous, sinon un script tout fait,
l'adresse d'un tutorial afin d'en creer un ???
Merci d'avance.

4 réponses

Avatar
Emmanuel Dreux
Tout ce que tu peux faire est là:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ad/ad/user_interface_extension_for_new_object_classes.asp

En particulier regarde le chapitre Modifying Existing User Interfaces et le
chapitre
Property Pages for Use with Display Specifiers

"tseu" a écrit dans le message de news:

Bonjour à tous.

Je voudrais étendre la MMC AD Users & Computers avec des champs
personnalisés (qui ont été ajoutés au schéma), en fait j'aurais juste
besoin
de rajouter un champs dans les proprietes utilisateurs. On m'a dit que
c'etait possible via un script VB. Auriez-vous, sinon un script tout fait,
l'adresse d'un tutorial afin d'en creer un ???
Merci d'avance.


Avatar
tseu
Merci manu mais j'avais déja visité ces pages et le probleme est que je n'ai
pas de notions avancées de prog C++. Ne connaitrais-tu pas l'adresse d'un
site proposant un tutoriel complet avec un exemple qu'il suffit de modifier
grace au tutoriel ???
merci d'avance.
Avatar
tseu
Re-bonjour.
Je suis désolé manu pour mon dernier post, ignore le car je reviens apres de
longues recherches.
Bon, j'ai recupéré un projet VC++ qui crée effectivement un onglet
supplémentaire mais mon but etait, je le rapel, de rajouter uniquement 1 seul
champs dans l'onglet general. J'ai compris que chaque property-page à été
implementée dans la base de registre grace à son CSID (UUID). Donc j'ai
retrouvé la DLL qui m'interresse grace au CSID de l'onglet general:
dsprop.dll. Voilà ma question est simple: nous pouvons rajouter des onglets
mais pas en modifier des existant (ou alors il faudrait desassembler la dll
et ca c plutot hors de propos), alors microsoft aurait-il prevu un outil pour
palier ce manque ou faut-il reinventer la roue en programmant une dll en tous
points equivalente à dsprop.dll mais en y ajoutant un champs de notre choix
???
Merci de ta reponse qui m'eclairera j'en suis sur.
Avatar
Emmanuel Dreux
Je vois 3 solutions:
1.) Effectivement compilateur C++ et écriture d'un onglet.
2.) Affichage de l'attribut dans la vue ( ajout d'une colonne grâce à
ajout/suppression de colonnes peuplé à partir des champs display specifier,
extended ...)
3.) Eventuellement créer des menu contextuels d'administration:

Voici une exemple.
Je te laisse l'adapter selon tes besoins.
Pour l'utiliser, tu le lances 1 fois sur ton DC.
Dans Active directory users and computers, clique sur l'option afficher les
utilisateurs... en tant que conteneur.

Maintenant quand tu fais un click droit de la souris, un nouveau menu
contextuel apparait ou tu peux faire ce que tu veux ( query ldap par exemple
de ton attribut recherché et affichage ).

Teste ça sur un environnement de test, celà va sans dire.
J'ai testé le script suivant, il fonctionne.
Si tu rencontres des problèmes d'éxécution, ce sera surement du au formating
du lecteur de newsgroup. ( met des _ à la fin des lignes et ce sera ok).

En espérant que ça t'aide...

Dim oRoot
Dim oDisp
Dim oCont
Dim aMenu
Dim iCount
Dim sNewMenu
Dim oFileSystem
Dim sOutFile
Dim sSystemFolder
Set oFileSystem = WScript.CreateObject("Scripting.FileSystemObject")
sSystemFolder = oFileSystem.GetSpecialFolder(1)
'Connect to Display Specifiers Container
set oRoot = Getobject("LDAP://RootDSE")
set oCont = GetObject("LDAP://" & ", CN=DisplaySpecifiers," &
oRoot.get("configurationNamingContext"))
Set oDisp = oCont.GetObject("displaySpecifier","cn=user-Display")
MsgBox "Display Specifier: " & oDisp.Name
'Add Attribute Display Names
oDisp.PutEx 3,"attributeDisplayNames" , _
Array("secretary,Secretary","telephoneAssistant,Telephone Assistant")
oDisp.SetInfo
'Add Shell Context Menu
MsgBox "Adding Shell Context Menu item"
iCount = 0
If Not IsEmpty(oDisp.shellContextMenu) Then
aMenu = oDisp.GetEx("shellContextMenu")
For iCount = LBound(aMenu) to UBound(aMenu)
MsgBox "Existing Menu item: " & aMenu(iCount)
Next
iCount = iCount + 1
End If
sNewMenu = CStr(iCount) & ",&PA Info...,pashell.vbs"
oDisp.PutEx 3,"shellContextMenu" , Array(sNewMenu)
oDisp.SetInfo
MsgBox "Adding Shell Context Menu Program"
Set sOutFile = oFileSystem.CreateTextFile(sSystemFolder &
"pashell.vbs",True)
sOutFile.WriteLine "Dim Args"
sOutFile.WriteLine "Dim oUser"
sOutFile.WriteLine "Set Args = Wscript.Arguments"
sOutFile.WriteLine "MsgBox " & Chr(34) & "LDAP Path: " & Chr(34) & " &
Args(0)"
sOutFile.WriteLine "MsgBox " & Chr(34) & "Object Class: " & Chr(34) & " &
Args(1)"
sOutFile.WriteLine "Set oUser = GetObject(Args(0))"
sOutFile.WriteLine "MsgBox " & Chr(34) & "PA Info" & Chr(34) & " & vbCRLF &
" & _
Chr(34) & "Secretary: " & Chr(34) & " & oUser.secretary & vbCRLF & " &
Chr(34) & _
"Telephone Assistant: " & Chr(34) & " & oUser.telephoneAssistant"
sOutFile.WriteLine "Set oUser = Nothing"
sOutFile.WriteLine "WScript.Quit"
sOutFile.Close

'Add Admin Context Menu
MsgBox "Adding Admin Context Menu item"
iCount = 0
If Not IsEmpty(oDisp.adminContextMenu) Then
aMenu = oDisp.GetEx("adminContextMenu")
For iCount = LBound(aMenu) to UBound(aMenu)
MsgBox "Existing Menu item: " & aMenu(iCount)
Next
iCount = iCount + 1
End If
sNewMenu = CStr(iCount) & ",&PA Admin...,paadmin.vbs"
oDisp.PutEx 3,"adminContextMenu" , Array(sNewMenu)
oDisp.SetInfo
MsgBox "Adding Admin Context Menu Program"
Set sOutFile = oFileSystem.CreateTextFile(sSystemFolder &
"paadmin.vbs",True)
sOutFile.WriteLine "Dim Args"
sOutFile.WriteLine "Dim oUser"
sOutFile.WriteLine "Dim temp"
sOutFile.WriteLine "Set Args = Wscript.Arguments"
sOutFile.WriteLine "MsgBox " & Chr(34) & "LDAP Path: " & Chr(34) & " &
Args(0)"
sOutFile.WriteLine "MsgBox " & Chr(34) & "Object Class: " & Chr(34) & " &
Args(1)"
sOutFile.WriteLine "Set oUser = GetObject(Args(0))"
sOutFile.WriteLine "temp = InputBox(" & Chr(34) & "Current Secretary: " &
Chr(34) & _
" & oUser.secretary & vbCRLF & " & Chr(34) & "New Secretary" & Chr(34) & ")"
sOutFile.WriteLine "if temp <> " & Chr(34) & Chr(34) & " then oUser.Put " &
Chr(34) _
& "secretary" & Chr(34) & ",temp"
sOutFile.WriteLine "temp = InputBox(" & Chr(34) & "Telephone Assistant: " &
Chr(34) _
& " & oUser.telephoneAssistant & vbCRLF & " & Chr(34) & "New Number" &
Chr(34) & ")"
sOutFile.WriteLine "if temp <> " & Chr(34) & Chr(34) & " then oUser.Put " &
Chr(34) _
& "telephoneAssistant" & Chr(34) & ",temp"
sOutFile.WriteLine "oUser.SetInfo"
sOutFile.WriteLine "Set oUser = Nothing"
sOutFile.WriteLine "WScript.Quit"
sOutFile.Close
MsgBox "Quit..."
Set oDisp = Nothing
Set oCont = Nothing
Set oRoot = Nothing
Set oFileSystem = Nothing
WScript.Quit








"tseu" a écrit dans le message de news:

Re-bonjour.
Je suis désolé manu pour mon dernier post, ignore le car je reviens apres
de
longues recherches.
Bon, j'ai recupéré un projet VC++ qui crée effectivement un onglet
supplémentaire mais mon but etait, je le rapel, de rajouter uniquement 1
seul
champs dans l'onglet general. J'ai compris que chaque property-page à été
implementée dans la base de registre grace à son CSID (UUID). Donc j'ai
retrouvé la DLL qui m'interresse grace au CSID de l'onglet general:
dsprop.dll. Voilà ma question est simple: nous pouvons rajouter des
onglets
mais pas en modifier des existant (ou alors il faudrait desassembler la
dll
et ca c plutot hors de propos), alors microsoft aurait-il prevu un outil
pour
palier ce manque ou faut-il reinventer la roue en programmant une dll en
tous
points equivalente à dsprop.dll mais en y ajoutant un champs de notre
choix
???
Merci de ta reponse qui m'eclairera j'en suis sur.