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

Mitglied: FarelM

FarelM (Level 1) - Jetzt verbinden

07.03.2008, aktualisiert 20.10.2008, 4360 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", "https://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
Datenbanken
SQL Abfrage mit Visual Studio
gelöst Frage von specialuserDatenbanken5 Kommentare

Servus, habe mir Visual Studio installiert und habe einige SQL-Befehle welche ich gerne an der SQL-Datenbank abfragen würde und ...

Batch & Shell
Powershell Visual Studio Code
Frage von H41mSh1C0RBatch & Shell13 Kommentare

Moin in die Runde, Freitag der 13. ;( gestern doch das erstemal VS Code heruntergeladen mit dem Ziel es ...

Visual Studio

Visual Studio - Codierung dauerhaft speichern

gelöst Frage von pelzfruchtVisual Studio5 Kommentare

Hi, Ich hab eine Frage zu Visual Studio 2015. Unter Datei Erweiterte Speicheroptionen lässt sich die Codierung für den ...

Visual Studio

Probleme mit Android Entwicklung in Visual Studio

gelöst Frage von Pr0m3th3usVisual Studio3 Kommentare

Hi, Ich habe ein Problem mit der Entwicklung einer Cross-Platform App in Visual Studio. Wenn ich das Android-Layout(Main.axml) öffne ...

Neue Wissensbeiträge
Windows 10

Windows 10 on ARM: von Microsoft entfernte Info - Klartext, was nicht geht

Information von kgborn vor 1 StundeWindows 10

Windows 10 on ARM ist ja eine neue Variante, die Microsoft im Verbund mit Geräteherstellern am Markt etablieren will. ...

Microsoft
TV-Tipp: Das Microsoft-Dilemma
Information von kgborn vor 1 StundeMicrosoft1 Kommentar

Aktuell gibt es in Behörden und in Firmen eine fatale Abhängigkeit von Microsoft und dessen Produkten. Planlos agieren die ...

Windows 10
Zero-Day-Lücke in Microsoft Edge
Information von kgborn vor 2 TagenWindows 10

In Microsofts Edge-Browser klafft wohl eine nicht geschlossene (0-Day) Sicherheitslücke im Just In Time Compiler (JIT Compiler) für Javascript. ...

Sicherheit
Microsoft und Skype: Sicherheit
Information von kgborn vor 2 TagenSicherheit

Die Tage gab es ja einige Berichte zur Sicherheit des Skype-Updaters. Der Updater von Skype läuft unter dem Konto ...

Heiß diskutierte Inhalte
Windows 10
Windows 10 (1709) Tastur und Maus wieder einschalten?
Frage von LochkartenstanzerWindows 1017 Kommentare

Moin, Ich habe von einem Kunden einen Win10-Rechner bekommen, bei dem weder Tastatur noch Maus geht. Die Hardware funktioniert ...

Humor (lol)
Was könnte man mit einem Server machen? Idee gesucht
Frage von 2SeitenHumor (lol)13 Kommentare

Hey Zusammen Ich habe einen alten HP G2 Rackserver zu Hause rumliegen. 28GB Ram, 1xAMD Prozi mit etwa 2GHz. ...

Firewall
RB2011 Firewall Rule eine bestimmte Mac oder IP Adresse nicht zu blockieren
Frage von lightmanFirewall11 Kommentare

Hallo liebes Forum mit ihren Spezialisten. Ich habe meine Firewall so konfiguriert das kein Endgerät ohne meine Speziellen Erlaubnis ...

Server-Hardware
Server für Exchange 2016, Kaufberatung
Frage von MazenauerServer-Hardware10 Kommentare

Guten Tag werte Gemeinde, Vorab: Ich dachte es gab mal einen separaten Bereich für solche Anfragen, habe ich leider ...