Top-Themen

Aktuelle Themen (A bis Z)

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, 4346 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 ..
Ähnliche Inhalte
Installation
Visual Studio 2017 ohne lokale Adminrechte
Beitrag von 6 Kommentare

Frage von Pakko0 zum Thema Installation

Datenbanken
SQL Abfrage mit Visual Studio
Beitrag von 5 Kommentare

Frage von specialuser zum Thema Datenbanken

Entwicklung
Lizenzierung Visual Studio für Externe, temporär?
Beitrag von 7 Kommentare

Frage von Cloudyme zum Thema Entwicklung

Visual Studio
Visual Studio 2017 Community Crash
Beitrag von 1 Kommentar

Frage von Herbrich19 zum Thema Visual Studio

Neue Wissensbeiträge
Vmware

VMware Desktopprodukte sind verwundbar

Beitrag von

Information von Penny.Cilin zum Thema Vmware

Datenschutz

Session-Replay: Viele beliebte Webseiten zeichnen jegliche Texteingabe auf

Beitrag von

Information von Penny.Cilin zum Thema Datenschutz

Sicherheit

Zufällige Speicherzuweisung: Windows-Bug hebelt Sicherheitsmechanismus ASLR aus

Beitrag von

Information von Penny.Cilin zum Thema Sicherheit

Multimedia

Raspberry Pi als Digital-Signage-Computer

Beitrag von 1 Kommentar

Information von BassFishFox zum Thema Multimedia

Heiß diskutierte Inhalte
Visual Studio
Vb.net-Tool zum Erzeugen einer Outlook-E-Mail
Beitrag von 24 Kommentare

Frage von ahstax zum Thema Visual Studio

Windows Server
RDP macht Server schneller???
Beitrag von 16 Kommentare

Frage von JaniDJ zum Thema Windows Server

Windows Netzwerk
Netzwerk Neustrukturierung
Beitrag von 16 Kommentare

Frage von IT-Dreamer zum Thema Windows Netzwerk

Windows 10
Windows 10 dunkler Bildschirm nach Umfallen
Beitrag von 15 Kommentare

Frage von Akcent zum Thema Windows 10