Maschi
Big d00d
|
Grüß euch
Da ich schon die MSDN schon durchstöbert habe und auch teilweise fündig wurde, dachte ich mir, ich probier es einmal hier aus...
Ich brauch ein Tutorial oder einen Ansatz wo beschrieben steht, wie ich am einfachsten mit VB im Active Directory User/Gruppen anlegen kann.
Sollte irgendwer so etwas haben oder Erfahrung in diesem Bereich gesammelt haben, so wäre ich sehr dankbar wenn ihr mir das zukommen lassen könntet.
mfg Maschi
|
Maschi
Big d00d
|
Ich hab einen Sample Code zum Einfügen eines Users gefunden:
Const ADS_UF_SCRIPT = &H1 Const ADS_UF_ACCOUNTDISABLE = &H2 Const ADS_UF_HOMEDIR_REQUIRED = &H8 Const ADS_UF_LOCKOUT = &H10 Const ADS_UF_PASSWD_NOTREQD = &H20 Const ADS_UF_PASSWD_CANT_CHANGE = &H40 Const ADS_UF_ENCRYPTED_TEXT_PASSWORD_ALLOWED = &H80 Const ADS_UF_TEMP_DUPLICATE_ACCOUNT = &H100 Const ADS_UF_NORMAL_ACCOUNT = &H200 Const ADS_UF_INTERDOMAIN_TRUST_ACCOUNT = &H800 Const ADS_UF_WORKSTATION_TRUST_ACCOUNT = &H1000 Const ADS_UF_SERVER_TRUST_ACCOUNT = &H2000 Const ADS_UF_DONT_EXPIRE_PASSWD = &H10000 Const ADS_UF_MNS_LOGON_ACCOUNT = &H20000 Const ADS_UF_SMARTCARD_REQUIRED = &H40000 Const ADS_UF_TRUSTED_FOR_DELEGATION = &H80000 Const ADS_UF_NOT_DELEGATED = &H100000 Const ADS_UF_USE_DES_KEY_ONLY = &H200000 Const ADS_UF_DONT_REQUIRE_PREAUTH = &H400000 Const ADS_UF_PASSWORD_EXPIRED = &H800000 Const ADS_UF_TRUSTED_TO_AUTHENTICATE_FOR_DELEGATION = &H1000000
Public Sub CreateUser(strName As String, strSAMAccountName As String, strInitialPassword As String) Dim objRootDSE As IADs Dim objUsers As IADsContainer Dim objNewUser As IADsUser
On Error Resume Next ' Bind to the rootDSE object. Set objRootDSE = GetObject("LDAP://rootDSE") If (Err.Number <> 0) Then Exit Sub End If ' Bind to the Users folder in the domain. Set objUsers = GetObject("LDAP://CN=Users," & objRootDSE.Get("defaultNamingContext")) If (Err.Number <> 0) Then Exit Sub End If ' Create the user object. Set objNewUser = objUsers.Create("user", "CN=" + strName) If (Err.Number <> 0) Then Exit Sub End If ' Set the sAMAccountName property. objNewUser.Put "sAMAccountName", strSAMAccountName If (Err.Number <> 0) Then Exit Sub End If ' Commit the new user. objNewUser.SetInfo If (Err.Number <> 0) Then Exit Sub End If
' Set the initial password. This must be done after ' SetInfo is called because the user object must ' already exist on the server. objNewUser.SetPassword strInitialPassword If (Err.Number <> 0) Then Exit Sub End If ' Set the pwdLastSet property to zero, which forces the ' user to change the password at next log on. objNewUser.Put "pwdLastSet", 0 If (Err.Number <> 0) Then Exit Sub End If ' To enable the user account, remove the ' ADS_UF_ACCOUNTDISABLE flag from the userAccountControl ' property. Also, remove the ADS_UF_PASSWD_NOTREQD and ' ADS_UF_DONT_EXPIRE_PASSWD flags from the ' userAccountControl property. userActCtrl = objNewUser.Get("userAccountControl") userActCtrl = userActCtrl And Not (ADS_UF_ACCOUNTDISABLE + ADS_UF_PASSWD_NOTREQD + ADS_UF_DONT_EXPIRE_PASSWD) objNewUser.Put "userAccountControl", userActCtrl If (Err.Number <> 0) Then Exit Sub End If ' Commit the updated properties. objNewUser.SetInfo End Sub
Stammt direkt aus dem MSDN
Das Problem ist nur, dass er IADs als Datentyp net kennt und ich keine Ahnung hab warum?
Hat wer eine Idee?
mfg Maschi
|
JC
AdministratorDisruptor
|
Das Problem ist nur, dass er IADs als Datentyp net kennt und ich keine Ahnung hab warum? Liegt vielleicht daran, dass du noch eine Referenz (Verweis) auf die Active DS Type Library setzen musst.
|
Maschi
Big d00d
|
Soweit ich das mitbekommen hab müsst das ja mit import gehen?` Die Library heisst doch System.DirectoryServices doch die kennt er komischerweise auch net? Oder heisst sie doch anders?
mfg Maschi
|
Ringding
Pilot
|
Bei mir heißt sie genau so, wie JC geschrieben hat.
|
JC
AdministratorDisruptor
|
Kann es sein, dass bei .Net mit dem alten VB mixt? AFAIK gibt's keine Namespaces wie "System.DirectoryServices" in VB6, weshalb du solche Verweise über Project -- References hinzufügen musst.
|
Maschi
Big d00d
|
Wie setz ich die Referenz auf die Active DS Type Library?
mfg Maschi
|
JC
AdministratorDisruptor
|
Wie setz ich die Referenz auf die Active DS Type Library?
mfg Maschi As said: Du wählst in der Menüleiste den Punkt Projekt und dort dessen Untermenü Verweise aus. In der nun erscheinenden Eingabemaske wählst du in der Liste den Eintrag "Active DS Type Library" aus (nicht nur selektieren, sondern anhaken), bestätigst mit Ok - et voila, schon sollte VB die Typen kennen.
|
Maschi
Big d00d
|
das hab ich gmacht, geht aber komischerweise noch immer nicht... hab einen screenshot eingefügt..
mfg Maschi
|
JC
AdministratorDisruptor
|
Bei .Net gehst du folgendermaßen vor:
Im Solution Explorer machst du einen Rechtsklick auf Verweise -- Verweis hinzufügen. Dann wählst du den Verweis System.DirectoryServices.dll aus. Anschließend fügst du noch ein "Imports System.DirectoryServices"-Statement an und dann sollte es funktionieren.
|
Maschi
Big d00d
|
Ich glaub ich werd deppert ich mach haargenau was du sagst, aber es geht einfach net.... Ich bin doch nicht so unfähig Isses gscheiter es in Visual Studio .Net zu machen weil ich hätte grad eine VB 5 CD gefunden.... Oder gibts eine Programmiersprache als Alternative zur Auswahl mit der man mein Problem lösen kann? mfg Maschi
Bearbeitet von Maschi am 22.01.2004, 16:43
|
JC
AdministratorDisruptor
|
|