6

我正在使用GroupPrincipal. System.DirectoryServices.AccountManagement创建和更新时,我还需要能够设置ManagedBy您能够Managed By在 AD 管理控制台的组属性中的选项卡中设置的属性。

可以以编程方式完成吗?

4

3 回答 3

8

不幸的是,您不能直接执行此操作 - 但您可以访问底层DirectoryEntry并在那里执行此操作:

PrincipalContext ctx = new PrincipalContext(ContextType.Domain, "YOURDOMAIN");

UserPrincipal toBeModified = UserPrincipal.FindByIdentity(".....");
UserPrincipal manager = UserPrincipal.FindByIdentity(ctx, "......");

DirectoryEntry de = toBeModified.GetUnderlyingObject() as DirectoryEntry;

if (de != null)
{
    de.Properties["managedBy"].Value = manager.DistinguishedName;
    toBeModified.Save();
}
于 2010-07-20T11:32:38.257 回答
1

您可以扩展 GroupPrincipal 类并使用ExtensionSet方法提供一个ManagedBy属性。

于 2010-07-20T11:08:01.617 回答
0

看看这个页面。这是 C# 中关于 AD 的最佳教程之一。

一些应该工作的代码(未经测试):

    string connectionPrefix = "LDAP://" + ouPath;
    DirectoryEntry dirEntry = new DirectoryEntry(connectionPrefix);
    DirectoryEntry newGroup = dirEntry.Children.Add
        ("CN=" + groupName, "group");
    group.Properties["sAmAccountName"].Value = groupName;
    newGroup.Properties["managedBy"].Value = managerDistinguishedName;
    newGroup.CommitChanges();
    dirEntry.Close();
    newGroup.Close();
于 2010-07-20T11:03:22.507 回答