0

我正在尝试添加一个用户,将他们添加到一个组中,然后将该组作为用户的主要组。我一直在使用 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();
}

有没有一种快速的方法可以让该组成为用户的主要组?一旦我建立了主要组,我将删除“域用户”的默认组。任何帮助表示赞赏。-卡里

4

1 回答 1

0

那是由属性primaryGroupID控制的。默认情况下它不公开,UserPrincipal因此您必须创建自己的子类来公开它,或者使用更多 RAW 底层System.DirectoryServices对象并设置属性。

更新: 2008 年及更早的 MSDN 杂志文章不再通过 Web 界面提供。您需要下载2008 年 1 月杂志的 chm 文件并找到文章“查找:在 .NET Framework 3.5 中管理目录安全主体”以请参阅有关制作子类的文章)

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

于 2013-07-09T20:36:01.247 回答