www.IT-Visions.de-Diskussionsforen (Version 2.1)
(Diese Seite wurde noch nicht auf das neue Layout umgestellt!)


Diese Foren stehen den Lesern unserer Bücher und allen anderen registrieren Benutzern dieser Website zur Verfügung. Wir würden uns freuen, wenn viele Nutzer dieser Website hier nicht nur Fragen stellen, sondern auch die Fragen anderer Nutzer beantworten. Diese Foren sind ein ehrenamtlicher, nicht-kommerzieller, unmoderierter Community-Dienst von www.IT-Visions.de. Wenn Sie kommerzielle Unterstützung für .NET/Scripting/PowerShell suchen, schauen Sie bitte auf unser Support-Angebot und unsere Schulungsangebote für Scripting und Schulungsangebote für .NET.



Fehler: Festsetzung neuer PrimaryGroup in der AD
Autor:  JörgWelters
E-mail:  Antworten bitte nur in das Forum!
Datum:  03.07.2009 14:18:14
Subject:  Fehler: Festsetzung neuer PrimaryGroup in der AD
Bezug zum Buch: 
Message:  Hallo zusammen,

ich möchte in einem Webpart mit C#-Code einen neuen AD-User anlegen und dessen PirmaryGroup ändern. Dieses Webpart funktioniert manchnal und manchmal nicht.
Ich habe leider nicht herausgefunden, woran es liegt.
Folgende Software ist auf dem Server installiert
- Windows Server 2003 R2 64 Bit
- SharePoint Server 2007
- .Net Framework 2.0 (x64)
- .Net Framework 3.0

Wenn ich die Funktion ausführe, wird der Benutzer angelegt. Allerdings stoppt der Code mit der folgenden Fehlermeldung beim erstellen des Benutzer in der AD-Gruppe PrimaerNeu.
Ich kann dieses leider nicht debuggen, da es unser Produktiv-system ist.
Das komische ist, dass das gleich Webpart in der gleichen AD auf unserem Test-Sharepoint keinen Fehler verursacht.
Der einzige Unterschied ist, dass ich auf diesem das .Net Framework mit Service Pack 2 gepatched habe.

Wenn mir jemand helfen könnte, wäre ich sehr dankbar.

Gruss Joerg Welters

Fehler:

System.Reflection.TargetInvocationException: Ein Aufrufziel hat einen Ausnahmefehler verursacht. ---> System.UnauthorizedAccessException: Access is denied. (Ausnahme von HRESULT: 0x80070005 (E_ACCESSDENIED))
   --- Ende der internen Ausnahmestapelüberwachung ---
   bei System.DirectoryServices.DirectoryEntry.Invoke(String methodName, Object[] args)
   bei GmhSystems.Webparts.ExterneKontakte.Klassen.CActiveDirectory.ErstelleNeueBenutzer(String nachname, Boolean istMaennlich, String vorname, String eMail, String firma, String erstellungsKennzeichen)

Der folgende Code erzeugt den Fehler:

// Variablen
DirectoryEntry          ouNeueBenutzer;
DirectoryEntry          neuerBenutzer;
DirectoryEntry          adGruppePrimaerNeu;
DirectoryEntry          adGruppeDomainUsers;
const int               DONT_EXPIRE_PASSWD = 0x10000;
const int               ACCOUNTDISABLE      = 0x0002;
object                  primaryGroupToken;
int                     vorherigerWert;
              

// Mit der OU der neuen Benutzer verbinden
ouNeueBenutzer = new DirectoryEntry(ldap_OU_NeueBenutzer,
                    login_LDAPZugriff, passwort_LDAPZugriff);

// Neuen Benutzer erzeugen und die Eigenschaften aendern
neuerBenutzer = ouNeueBenutzer.Children.Add("cn=nachname
                                       vorname", "user");
neuerBenutzer.Properties["samAccountName"].Add("vnachname");
neuerBenutzer.Properties["userPrincipalName"].Add
                          ("vnachname" + "@domain.local");
neuerBenutzer.Properties["displayname"].Add(nachname + ", "
                          + vorname + iDNeuerBenutzer);
neuerBenutzer.CommitChanges();

// Benutzer aktivieren
vorherigerWert = (int)neuerBenutzer.Properties
                             ["userAccountControl"].Value;
neuerBenutzer.Properties["userAccountControl"].Value =
                      vorherigerWert | DONT_EXPIRE_PASSWD;
neuerBenutzer.CommitChanges();
vorherigerWert = (int)neuerBenutzer.Properties
                     ["userAccountControl"].Value;
neuerBenutzer.Properties["userAccountControl"].Value =
                      vorherigerWert & ~ACCOUNTDISABLE;
neuerBenutzer.CommitChanges();              

// Passwort setzen
neuerBenutzer.Invoke("setpassword", "passwort");

// Gruppe Externe Benutzer hinzufuegen
adGruppePrimaerNeu= new DirectoryEntry(ldap_PrimaerNeu,
                    login_LDAPZugriff, passwort_LDAPZugriff);
adGruppePrimaerNeu.Invoke("Add", new object[] {
                                    neuerBenutzer.Path } );
              
// Primaere Gruppe setzen
adGruppePrimaerNeu.Invoke("GetInfoEx", new object[]
               { new object[] { "primaryGroupToken" }, 0 } );
primaryGroupToken = adGruppePrimaerNeu.Invoke("Get", new
                          object[] { "primaryGroupToken" });
neuerBenutzer.Properties["primaryGroupID"].Value =
                                       primaryGroupToken;
neuerBenutzer.CommitChanges();

// Domain-Users Gruppe loeschen
adGruppeDomainUsers = new DirectoryEntry(ldap_DomainUsers,
                    login_LDAPZugriff, passwort_LDAPZugriff);
adGruppeDomainUsers.Invoke("Remove", new object[] {
                                      neuerBenutzer.Path });

Antworten

  Zurück zum Forum



 .NET Framework-Programmierung -- C#, VB.NET, ASP.NET, u.a.
 Fehler: Festsetzung neuer PrimaryGroup in der AD von JörgWelters  am 3.7.2009 2:18:14 PM


www.IT-Visions.de - Dr. Holger Schwichtenberg / 1998-2019