2

DirectoryEntryLDAPを介してローカルActiveDirectoryを操作するために使用するコードがあります。現在、特定のものを見つけOU、それにユーザーを追加し、ユーザーのプロパティを更新してから、すべての変更をコミットします。

DirectoryEntry ldapRoot = new DirectoryEntry(ldapString, user, password);
DirectoryEntry userGroup = ldapRoot.Children.Find("OU=OUGroup");
DirectoryEntry newUser = userGroup.Children.Add("CN=" + userName, "user");
newUser.Properties["displayName"].Value = displayName;

...

newUser.CommitChanges();
userGroup.Close();
ldapRoot.Close();

ldapStringは似たようなものでLDAP:\\DC=company,DC=local、基本的にはルートエントリをフェッチするだけです。

いくつかのプロパティを変更しましたが、すべて正常に機能しています。ただし、OUSharePoint_Groupsという名前の別のグループがあり、その中には。という名前のグループがありますInternal。このグループのメンバーとして新しいユーザーを追加したいのですが、その方法がわかりません。私は次のことを試しました:

DirectoryEntry spGroup = ldapRoot.Children.Find("OU=Sharepoint_Groups");
DirectoryEntry internal = spGroup.Children.Find("CN=Internal");

それは機能せず、どのように対処すべきかわかりませんInternal-CN =は正しいですか、それとも他の仕様を使用する必要がありますか?

そして、正しいグループを作成したら、既存のユーザーをそのグループに追加するにはどうすればよいですか?

前もって感謝します

4

1 に答える 1

3

基本的に、既存のグループにユーザーを追加するには、そのグループにバインドしmember、ユーザーの完全修飾識別名を使用してそのプロパティを更新する必要があります。

DirectoryEntry deGroup = new DirectoryEntry("LDAP://CN=Internal,OU=Sharepoint_Groups,DC=Company,DC=local");

string userDN = newUser.Properties["distinguishedName"][0].ToString();

deGroup.Properties["member"].Add(userDN);
deGroup.CommitChanges();

このようなもののための素晴らしいリソースは、CodeProjectの記事です。C#を使用してActive Directoryのほぼすべてを実行する方法-多くの便利なコードサンプル!

于 2010-11-04T11:38:18.630 に答える