使用System.DirectoryServices.AccountManagement,使组成为主要组

时间:2013-07-09 20:04:07

标签: c# active-directory account-management

我尝试添加用户,将其添加到组中,然后将该组设为用户的主要组。我一直在使用System.DirectoryServices.AccountManagement进行所有AD访问。 我已使用以下内容添加了用户:

principalContext = new PrincipalContext(ContextType.Domain, Globs.strDomain, userOU);
UserPrincipal userPrincipal = new UserPrincipal(principalContext);
userPrincipal.Surname = this.textBox_LastName.Text;
userPrincipal.GivenName = this.textBox_FirstName.Text;
userPrincipal.SamAccountName = this.textBox_LogonName.Text;
userPrincipal.MiddleName = this.textBox_Initials.Text;
userPrincipal.DisplayName = label_DisplayName.Text;
userPrincipal.Description = this.comboBox_Description.Text;
userPrincipal.UserPrincipalName = this.textBox_LogonName.Text;
userPrincipal.SetPassword(defaultPassword);
userPrincipal.PasswordNeverExpires = true;
userPrincipal.Enabled = true;
userPrincipal.Save();

然后我使用以下内容将用户添加到组:

using (PrincipalContext pc = new PrincipalContext(ContextType.Domain, Globs.strDomain))
{
    GroupPrincipal group = GroupPrincipal.FindByIdentity(pc, groupName);
    group.Members.Add(pc, IdentityType.UserPrincipalName, userId);
    group.Save();
}

是否可以快速获取该组并将其作为用户的主要组?一旦我创建了主要组,我将删除" Domain Users"的默认组。任何帮助表示赞赏。 -Cary

1 个答案:

答案 0 :(得分:0)

attribute primaryGroupID控制。它不会被默认的UserPrincipal公开,因此您必须make your own subclass that exposes it或使用更多RAW底层System.DirectoryServices对象并设置属性。

更新: 2008和MSDN杂志的早期文章不再通过网络界面提供。您需要下载January 2008 magazine's chm file并找到文章“查找它:管理.NET Framework 3.5中的目录安全主体“以查看有关创建子类的文章”

属性值是组的RID,因此您需要从新组中获取primaryGroupToken attribute并将其设置为用户primaryGroupID属性。