Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

AD User anlegen - Passwort wird nicht gesetzt - Visual Studio 2008

Frage Entwicklung Visual Studio

Mitglied: FarelM

FarelM (Level 1) - Jetzt verbinden

07.03.2008, aktualisiert 20.10.2008, 4299 Aufrufe, 7 Kommentare

Hallo,

für meine Firma schreibe ich ein Programm in Visual Basic (in Visual Studio 2008 auf Windows SBS 2003), welches das anlegen von Usern im Active Directory erleichtern soll.
Allerdings wird dabei nie das Passwort gesetzt -> Man kann sich also mit diesem User OHNE Passwort in der Domäne anmelden.
Dass das absolut ungut ist, ist klar, aber ich schaff es einfach nicht, diesen Fehler zu beheben. Hab schon so ziemlich alles versucht.

Hier mal der Code der das anlegen betrifft:

01.
cname = "CN=" & txt_nachname.Text & " " & txt_vorname.Text 
02.
 
03.
        Dim objParent As New DirectoryServices.DirectoryEntry(userdestination, "administrator@baierjj.local", "[entfernt]", DirectoryServices.AuthenticationTypes.Secure) 
04.
        Dim thepasswort As String = "[entfernt]2" 
05.
 
06.
        objChild = objParent.Children.Add(cname, "user") 
07.
        objChild.Password = thepasswort 
08.
        objChild.Properties("userPrincipalName").Add(txt_logonname.Text & ouaddition) 
09.
        objChild.Properties("SAMAccountName").Add(txt_logonname.Text) 
10.
        objChild.Properties("givenname").Add(txt_vorname.Text) 
11.
        objChild.Properties("sn").Add(txt_nachname.Text) 
12.
        objChild.Properties("displayname").Add(txt_nachname.Text & " " & txt_vorname.Text) 
13.
        objChild.Properties("profilePath").Add(txt_profilePath.Text) 
14.
        objChild.Properties("homeDirectory").Add(txt_homedirectory.Text) 
15.
        objChild.Properties("homeDrive").Add("U:") 
16.
        objChild.Properties("scriptPath").Add(txt_scriptPath.Text) 
17.
        objChild.Properties("mail").Add(txt_mail.Text) 
18.
        objChild.Properties("l").Add(txt_city.Text) 
19.
        objChild.Properties("st").Add(txt_state.Text) 
20.
        objChild.Properties("postalcode").Add(txt_plz.Text) 
21.
        objChild.Properties("co").Add(txt_country.Text) 
22.
        'objChild.Properties("streetAddress").Add(txt_street.Text) 
23.
        objChild.Properties("extensionAttribute1").Add(extattri1) 
24.
        objChild.CommitChanges()
Ich bin eigentlich noch Anfänger in VB und der Teil da oben ist auch noch nicht ganz fertig, bzw ne Baustelle. Vielleicht weiß auch jemand, warum ich die Eigenschaft "streetAddress" nicht setzen kann...
Mitglied: SvenGuenter
07.03.2008 um 11:22 Uhr
Zwei Fragen.

1. Welcher Server
2. Du redest einmal von Passwort und einmal von Streetadress was denn nun?
Bitte warten ..
Mitglied: FarelM
07.03.2008 um 11:24 Uhr
Als Betriebssystem nutze ich einen Windows Small Business Server 2003 R2 Premium.

Im Prinzip gehts mir ums Passwort. Dass die Eigenschafft "streetAddress" nicht gefunden wird, ist eher nebensächlich.

Vielleicht sollte ich noch hinzufügen, dass beim Passwort keinerlei Fehlermeldung kommt.
Bitte warten ..
Mitglied: SvenGuenter
07.03.2008 um 13:22 Uhr
japp weil du es nicht ändern oer auslesen kannst per software.


Die ADS blockt jeden zugriff von aussen auf die DB fürs passwort.
Du musst da schon dann einige andere Sachen machen um da was zu ändern. Aber da wirst du hier keine Auskünfte drüber bekommen da diese Infos auch zum Hacken von Passwörtern führen kann.
Habe diese Erfahrung auch gemacht und dann mit viiiiiel Googeln die Antwort gefunden. Kann dir nur den Tip geben das du die MSDN durchforsten solltest. Da findest du Ansätze zu diesem Problem

Gruß

Sven
Bitte warten ..
Mitglied: FarelM
07.03.2008 um 13:37 Uhr
Okay Danke. Dann werd ich erstmal nen Workaround machen, der einen gleich zum User im ADS bringt, damit man das PW schnell ändern kann.

Schönen Tag noch
Bitte warten ..
Mitglied: SvenGuenter
07.03.2008 um 13:46 Uhr
Da hast du schlechte karten wenn du nciht die funktionen der ADS nimmst. Du wirst so ohne weiteres nicht das Passwort eines Users ändern oder löschen können.
Bitte warten ..
Mitglied: 60730
07.03.2008 um 14:10 Uhr
Moinsen,

dieses Script stammt nicht von mir, ich habe es lediglich an unsere Bedürfnisse angepasst.
Natürlich habe ich einige Spuren verwischt und es etwas erweitert.

Daher bitte mal genau durchschauen.

Das Script legt nicht nur einen User an, der ein Passwort hat - sondern auch dessen Homeverzeichnis und setzt die rechte für den User und die OU IT.

Ich weiß, das sollte besser dokumentiert sein, aber ich hab grad keine Zeit und dir drängst ja...

Domain.vbs
01.
dim rootDSE 
02.
set rootDSE = GetObject("LDAP://RootDSE") 
03.
domainname=rootDSE.Get("defaultnamingcontext") 
04.
 
05.
set domain = GetObject("LDAP://" & domainname) 
06.
 
07.
' Popup Benutzername 
08.
Vname = InputBox("Vorname:       ", "    Neuen Benutzer in Domain erstellen") 
09.
NName = InputBox("Nachname:   ", "    Neuen Benutzer in Domain erstellen") 
10.
 
11.
 
12.
Name =  Vname & "." & NName 
13.
logon = Name & "@Domain" 
14.
mail = Name & "@administrator.de" 
15.
home ="\\server003\user\" & Name 
16.
 
17.
' Popup Telefonnummer: 00000000 
18.
intTel = InputBox("Telefondurchwahl:  +49 0000 00", "    Neuen Benutzer in Domain erstellen") 
19.
 
20.
Telefon = "+49 00 00 00" & intTel 
21.
 
22.
' Popup Personalnummer in Feld Beschreibung 
23.
Perso = InputBox("Personalnummer", "    Neuen Benutzer in Domain erstellen") 
24.
 
25.
If MsgBox("Name:                  "&Name& vbCrLf & "Telefon:               " & Telefon & vbCrLf & "Personalnummer: " & Perso&"" ,  VbExclamation or VbYesNo, "    Soll dieser Neue Benutzer in Domain erstellt werden?")= vbYes then 
26.
 
27.
' Ausgabe in Text 
28.
WScript.Echo "Name" &"," & "Telefon" &"," & "Personalnummer" 
29.
WScript.Echo Name & "," & intTel & "," & Perso 
30.
 
31.
 
32.
' Ordner anlegen 
33.
Set WshShell = WScript.CreateObject("WScript.Shell") 
34.
Return = WshShell.Run("cmd /c md \\server003\user\" & Name) 
35.
Return = WshShell.Run("cmd /c md \\server001\profil\" & Name) 
36.
Set WshShell = Nothing  
37.
 
38.
Set usr = domain.Create("user", "CN=" & Name & ",OU=User ,OU=Domain") 
39.
usr.Put "samAccountName", Name 
40.
usr.Put "givenName", Vname 
41.
usr.Put "sn", Nname 
42.
usr.Put "DisplayName", Name 
43.
usr.Put "homeDirectory", home 
44.
usr.Put "homeDrive", "n:" 
45.
usr.Put "userAccountControl", 512 
46.
usr.Put "profilePath","\\server001\profil\" & Name 
47.
usr.Put "scriptPath", "login.cmd" 
48.
usr.Put "telephoneNumber", Telefon 
49.
usr.Put "description" , Perso 
50.
usr.Put "postalCode", "0815" 
51.
usr.Put "street" , "Lindenstrasse" 
52.
usr.Put "userPrincipalName", logon 
53.
usr.Put "mail", mail 
54.
usr.Put "wWWHomePage", "http://www.administrator.de" 
55.
usr.SetInfo 
56.
usr.SetPassword "xxxxxx"	 
57.
 
58.
WScript.Sleep 12000 
59.
WScript.Sleep 12000 
60.
 
61.
Set WshShell = WScript.CreateObject("WScript.Shell") 
62.
Return = WshShell.Run("%COMSPEC% /c Echo j| cacls \\server001\profil\" & Name & " /t /c /g Domain\" & Name & ":F") 
63.
Return = WshShell.Run("%COMSPEC% /c Echo j| cacls \\server001\profil\" & Name & " /t /c /e /g Domain\g__it:F") 
64.
Return = WshShell.Run("%COMSPEC% /c Echo j| cacls \\server003\user\" & Name & " /t /c /g Domain\" & Name & ":F") 
65.
Return = WshShell.Run("%COMSPEC% /c Echo j| cacls \\server003\user\" & Name & " /t /c /e /g Domain\g__it:F") 
66.
Set WshShell = Nothing 
67.
 
68.
Else 
69.
End If 
70.
 
Bitte warten ..
Mitglied: DannyT
20.10.2008 um 13:21 Uhr
Hi,

Ich hab ne Antwort und ne Frage (weiter unten)

ist zwar schon etwas älter der Beitrag aber ich hab ziemlich das gleiche Problem gehabt (das Passwort betreffend) und so gelöst: Direkt nach dem commit vom User anlegen einfach folgenden Code (angepasst) einfügen:

01.
        Try 'Hier wird das Passwort des Users gesetzt 
02.
            Dim searcher As New System.DirectoryServices.DirectorySearcher() 'Suchfunktion 
03.
            searcher.Filter = "(&(objectClass=user)(objectCategory=person)(sAMAccountName=" & txt_logonname.Text & "))" 'Suchkriterien 
04.
            searcher.PropertiesToLoad.Add("adspath") 
05.
            Dim Result As System.DirectoryServices.SearchResult = searcher.FindOne() 
06.
            Dim usr As New DirectoryServices.DirectoryEntry(Result.Path) 
07.
            usr.Invoke("SetPassword", password) 'Passwort wird übergeben 
08.
            usr.CommitChanges() 'Änderungen werden gespeichert 
09.
        Catch ex As Exception 
10.
            MsgBox("Beim setzen des Passworts ist ein Fehler aufgetreten, bitte setzen Sie es manuell zurück." & Environment.NewLine & Environment.NewLine & ex.Message, MsgBoxStyle.Critical, "Fehler beim Setzen des Passworts") 
11.
        End Try


Nun zu meiner Frage:

Ich mache auch ein Programm zum anlegen eines Users im AD und mein Code sieht ähnlich aus wie der von farelm.
Allerdings muss man dafür ja Admin Username und Passwort eingeben, welche ich aus einer vorher ausgeführten Login-Form auslese.

Nun hab ich aber das Problem, dass ich keine Ahnung habe, wie ich überprüfe ob die Angaben der Loginform auch stimmen.
So wies jetzt steht, merkt man ein falsch eingegebenes Passwort quasi erst dann wenn man den User anlegen will.

Hat vielleicht jemand ne Ahnung wie man das lösen kann?
Oder gibts noch ne besser Methode?

Notfalls könnte man ja beim anmelden irgendwie versuchen, mit den eingegebenen Anmelde-Parametern etwas im AD zu modifizieren - aber keine Ahnung wie, was und ob das überhaupt funktioniert.

Gruß
Bitte warten ..
Neuester Wissensbeitrag
Ähnliche Inhalte
Visual Studio
Microsoft Visual Studio kommt für macOS (1)

Link von Frank zum Thema Visual Studio ...

Windows Tools
gelöst Visual Studio 2010 Ultimate Download? (6)

Frage von Herbrich19 zum Thema Windows Tools ...

Windows Server
gelöst AD-User einer AD-Gruppe auslesen und in ein File schreiben (15)

Frage von Estefania zum Thema Windows Server ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (33)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
FritzBox, zwei Server, verschiedene Netze (21)

Frage von DavidGl zum Thema LAN, WAN, Wireless ...

Viren und Trojaner
Aufgepasst: Neue Ransomware Goldeneye verbreitet sich rasant (20)

Link von Penny.Cilin zum Thema Viren und Trojaner ...