Ik ben bezig om een beheer tool te maken voor een applicatie die gebruik maakt van de rechten uit Active Directory op een Windows 2000 server.
Bij deze applicatie moeten de gebruikers lid zijn van een speciale groep voor deze applicatie. De beveiliging werkt al goed en dat is dan ook het probleem niet. Ik wil graag vanuit mijn eigen applicatie gebruikers aan kunnen maken en aan de betreffende groep toevoegen. Ik ben eerst begonnen om een stukje code te maken om een gebruiker toe te voegen. Dit werkt ook perfect de gebruiker wordt op de server toegevoegd. Ik wil de gebruiker daarna ook aan de betreffende groep toe voegen. Hier gaat het echter mis. Ik heb natuurlijk eerst in de MSDN gezocht hoe dit moet. Hier vondt ik de volgende code
Nou kloppen er volgens mij al een paar dingen niet aan deze voorbeeldcode want zo wordt er een DirectoryEntry dom aangemaakt zonder parameter. Deze DirectoryEntry verwijst dus niet naar een DirectoryEntry van de machine dus de Find die op de volgende regel wordt gedaan zal nooit effect hebben.
Maar het belangrijkste voor mij zijn de laatste 2 regels. Ik heb ondertussen al een DirectoryEntry die naar mijn groep verwijst ( Gevonden met de Find methode ) en een DirectoryEntry die naar de user verwijst( Verkregen door een user aan te maken of door te zoeken met de Find Methode ). Dus heb ik zelf de volgende code geschreven om even te testen.
Als ik dit doe dan krijg ik de foutmelding
Value cannot be null. Parameter name: value
op deze regel
Dus het blijkt dat de property distinguishedName niet bestaat. Dat heb ik dus gecontroleerd door alle properties van user te printen en het klopt inderdaad dat deze er niet tussen staat. Voor de rest staan alle properties inderdaad op de correcte waarde voor deze user. Ik heb nog geprobeerd om andere properties van de user aan de Add Methode mee te geven maar dan krijg ik deze foutmelding
Exception from HRESULT: 0x8000500F
Ik heb in de msdn gezocht (zowel online als mijn lokale versie) naar 0x8000500F maar dat leverde geen results op. Google leverde 1 result op
linkje maar hier stond geen antwoord in op mijn probleem.
Ik heb al van alles geprobeerd. Het kan denk ook niet aan de rechten liggen want op het moment is het account waaronder de code wordt uitgevoerd administrator. Het lukt dus ook gewoon om een user aan te maken dus het lijkt me dat ik ook een gebruiker aan een groep kan toevoegen.
Weet iemand mischien wat ik verkeerd doe of heeft er iemand een idee hoe ik wel een gebruiker aan een groep kan toevoegen?
Bij deze applicatie moeten de gebruikers lid zijn van een speciale groep voor deze applicatie. De beveiliging werkt al goed en dat is dan ook het probleem niet. Ik wil graag vanuit mijn eigen applicatie gebruikers aan kunnen maken en aan de betreffende groep toevoegen. Ik ben eerst begonnen om een stukje code te maken om een gebruiker toe te voegen. Dit werkt ook perfect de gebruiker wordt op de server toegevoegd. Ik wil de gebruiker daarna ook aan de betreffende groep toe voegen. Hier gaat het echter mis. Ik heb natuurlijk eerst in de MSDN gezocht hoe dit moet. Hier vondt ik de volgende code
C#:
1
2
3
4
5
6
7
8
| DirectoryEntry dom = new DirectoryEntry(); DirectoryEntry ou = dom.Children.Find("OU=Consulting"); // Add User to a group; DirectoryEntry usr = ou.Children.Find("CN=New User"); // To add multiple users to a group use AddRange( new string[] //{"...userDnHere","...userDnHere..."}); group.Properties["member"].Add(usr.Properties["distinguishedName"].Value); group.CommitChanges(); |
Nou kloppen er volgens mij al een paar dingen niet aan deze voorbeeldcode want zo wordt er een DirectoryEntry dom aangemaakt zonder parameter. Deze DirectoryEntry verwijst dus niet naar een DirectoryEntry van de machine dus de Find die op de volgende regel wordt gedaan zal nooit effect hebben.
Maar het belangrijkste voor mij zijn de laatste 2 regels. Ik heb ondertussen al een DirectoryEntry die naar mijn groep verwijst ( Gevonden met de Find methode ) en een DirectoryEntry die naar de user verwijst( Verkregen door een user aan te maken of door te zoeken met de Find Methode ). Dus heb ik zelf de volgende code geschreven om even te testen.
C#:
1
2
3
4
5
| DirectoryEntry machine= new DirectoryEntry("WinNT://WEBTEST" ); DirectoryEntry groep= machine.Children.Find( "GroepNaam" ); DirectoryEntry user = machine.Children.Find( "GebruikerNaam" ); groep.Properties["member"].Add( user.Properties["distinguishedName"].Value ); groep.CommitChanges(); |
Als ik dit doe dan krijg ik de foutmelding
Value cannot be null. Parameter name: value
op deze regel
C#:
1
| groep.Properties["member"].Add( user.Properties["distinguishedName"].Value ); |
Dus het blijkt dat de property distinguishedName niet bestaat. Dat heb ik dus gecontroleerd door alle properties van user te printen en het klopt inderdaad dat deze er niet tussen staat. Voor de rest staan alle properties inderdaad op de correcte waarde voor deze user. Ik heb nog geprobeerd om andere properties van de user aan de Add Methode mee te geven maar dan krijg ik deze foutmelding
Exception from HRESULT: 0x8000500F
Ik heb in de msdn gezocht (zowel online als mijn lokale versie) naar 0x8000500F maar dat leverde geen results op. Google leverde 1 result op
linkje maar hier stond geen antwoord in op mijn probleem.
Ik heb al van alles geprobeerd. Het kan denk ook niet aan de rechten liggen want op het moment is het account waaronder de code wordt uitgevoerd administrator. Het lukt dus ook gewoon om een user aan te maken dus het lijkt me dat ik ook een gebruiker aan een groep kan toevoegen.
Weet iemand mischien wat ik verkeerd doe of heeft er iemand een idee hoe ik wel een gebruiker aan een groep kan toevoegen?
[ Voor 3% gewijzigd door Woy op 15-09-2003 12:33 . Reden: opmaak ]
“Build a man a fire, and he'll be warm for a day. Set a man on fire, and he'll be warm for the rest of his life.”