Laden...

PrimaryGroup für einen UserPrincipal setzen

Erstellt von Mandy vor 11 Jahren Letzter Beitrag vor 11 Jahren 1.849 Views
M
Mandy Themenstarter:in
47 Beiträge seit 2008
vor 11 Jahren
PrimaryGroup für einen UserPrincipal setzen

Hallo,

ist es möglich, für einen UserPrincipal eine andere PrimaryGroup zu setzen?

Es gibt einige dubiose Vorschläge wie man die PrimaryGroup herausfindet,
aber ich habe nichts gefunden wie man sie setzen kann.

Hat jemand eine Idee?

Danke,
Mandy

16.835 Beiträge seit 2008
vor 11 Jahren

Über .NET Mittel "direkt" überhaupt nicht.
Du musst die ID der PrimaryGroup herausfinden, und dann in das Feld "primaryGroupId" des User-Objekts schreiben.

Über das UserPrincipal müsste das (ungetestet) so aussehen:
myUserPrincipalObj.ExtensionSet( "primaryGroupId", primaryGroupID );

M
Mandy Themenstarter:in
47 Beiträge seit 2008
vor 11 Jahren

Funktioniert nicht so ganz...

ExtensionSet ist protected, also habe ich ein Klasse davon abgeleitet.
Dann bekomme ich allerdings die Meldung:

Fehlermeldung:
2012-08-07 12:37:08,445 [7 ] ERROR ICE.TaskExterneProjekte
System.DirectoryServices.AccountManagement.PrincipalOperationException: Das angegebene Verzeichnisdienstattribut bzw. der angegebene Verzeichnisdienstwert ist bereits vorhanden. (Ausnahme von HRESULT: 0x8007200A) ---> System.DirectoryServices.DirectoryServicesCOMException: Das angegebene Verzeichnisdienstattribut bzw. der angegebene Verzeichnisdienstwert ist bereits vorhanden. (Ausnahme von HRESULT: 0x8007200A)
bei System.DirectoryServices.DirectoryEntry.CommitChanges()
bei System.DirectoryServices.AccountManagement.SDSUtils.ApplyChangesToDirectory(Principal p, StoreCtx storeCtx, GroupMembershipUpdater updateGroupMembership, NetCred credentials, AuthenticationTypes authTypes)
--- Ende der internen Ausnahmestapelüberwachung ---
bei System.DirectoryServices.AccountManagement.ADStoreCtx.Insert(Principal p)
bei System.DirectoryServices.AccountManagement.Principal.Save()

Hast du da noch einen Hinweis dazu?

Danke

Edit: Objekte kann man nicht ableiten --> Klasse

16.835 Beiträge seit 2008
vor 11 Jahren

Leider nein. Aber Du kannst Dir aus einer UserPrincipal den DirectoryEntry extrahieren und so eventuell direkter drauf zugreifen.
Dort gibt es eine Invoke() /InvokeSet() Methode; spätestens mit der kann man alles machen, wenn man weiß, was man invoken muss.