"Christmas - the time to fix the computers of your loved ones" « Lord Wyrm

Active Directory/VB

Maschi 21.01.2004 - 23:44 1124 11 Thread rating
Posts

Maschi

Big d00d
Registered: Feb 2003
Location: Wien
Posts: 133
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
Registered: Feb 2003
Location: Wien
Posts: 133
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

Administrator
Disruptor
Avatar
Registered: Feb 2001
Location: Katratzi
Posts: 9067
Zitat von Maschi
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
Registered: Feb 2003
Location: Wien
Posts: 133
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
Avatar
Registered: Jan 2002
Location: Perchtoldsdorf/W..
Posts: 4300
Bei mir heißt sie genau so, wie JC geschrieben hat.

JC

Administrator
Disruptor
Avatar
Registered: Feb 2001
Location: Katratzi
Posts: 9067
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
Registered: Feb 2003
Location: Wien
Posts: 133
Wie setz ich die Referenz auf die Active DS Type Library?

mfg
Maschi

JC

Administrator
Disruptor
Avatar
Registered: Feb 2001
Location: Katratzi
Posts: 9067
Zitat von Maschi
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
Registered: Feb 2003
Location: Wien
Posts: 133
das hab ich gmacht, geht aber komischerweise noch immer nicht...
hab einen screenshot eingefügt..

mfg
Maschi
screenshot_46981.jpg (downloaded 20x)

JC

Administrator
Disruptor
Avatar
Registered: Feb 2001
Location: Katratzi
Posts: 9067
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
Registered: Feb 2003
Location: Wien
Posts: 133
:bash:
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

Administrator
Disruptor
Avatar
Registered: Feb 2001
Location: Katratzi
Posts: 9067
Ich kann bezüglich .Net auch nur das nachbeten, was ich dank MSDN erfahren kann. Wir arbeiten hier leider noch mit VB6, und obwohl ich bereits einige Kurse besucht und auch selbst damit herumgespielt habe, ist es für mich wohl nicht möglich, dir hier Hilfestellung zukommen zu lassen.

Vielleicht helfen dir ja folgende Links weiter:
http://msdn.microsoft.com/library/d...adsiobjects.asp
http://msdn.microsoft.com/library/d..._to_a_group.asp
http://support.microsoft.com/defaul...kb;EN-US;306271

Sollte sich sonst niemand finden, der dir weiterhelfen kann, kann ich dich auch nur noch ans Extreme Visual Basic Forum verweisen.
Kontakt | Unser Forum | Über overclockers.at | Impressum | Datenschutz